profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/przygienda/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Tony Przygienda przygienda Silicon Valley Ph.D. in CS, most work done around large embedded systems

przygienda/dot-rust 50

A library for generating Graphviz DOT language files for graphs.

przygienda/rust-extfsm 38

Extended Finite State Machine library in Rust with internal event queue and entry/exit transitions

carllerche/pidfile-rust 6

Handles managing a pidfile for daemon mutual exclusion

slog-rs/kvfilter 6

Key values based filter Drain for slog-rs

przygienda/rift-python 2

Release 0.7 Update to Routing In Fat Trees (RIFT) implementation in Python

przygienda/thrift-implement-const 1

Apache Thrift modified to support Rust

przygienda/crates.io 0

Source code for crates.io

przygienda/edo 0

A super simple templating library for Rust.

przygienda/ferris 0

A hierarchical timer wheel in Rust, performance/API improvements

przygienda/grpc-rust 0

Rust implementation of gRPC (allow :Clone on grpc master)

issue commentAmanieu/intrusive-rs

is_linked is badly named

my gripe is only with 'is_linked', this is not equivalent to 'has_next' and it's very noticeable in code on doubly linked list

On Fri, Sep 10, 2021 at 1:53 PM Amanieu ***@***.***> wrote:

next contains UNLINKED_MARKER if the node is unlinked, whereas it contains 0/null when there is no next element in the list. is_linked will correctly return false for the last element in a list.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Amanieu/intrusive-rs/issues/63#issuecomment-916845740, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANDICZEQ7IVYL7UXPFRCJLUBHWVJANCNFSM5DZFH3PQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

przygienda

comment created time in 17 days

issue openedAmanieu/intrusive-rs

is_linked is badly named

it only checks next (even in doubly linked case).

this would be more logical has_successor or something like this

there is now no real method to figure out whether a node is really linked onto the list on not on it.

created time in 17 days

PR opened dtolnay/semver

fixing older nightlies

I have older nightly compiler in production build that fails.

+2 -0

0 comment

1 changed file

pr created time in 25 days

push eventprzygienda/semver

prz@zeta2.ch

commit sha 984e5348f7c29d7858ca22e1ce22e2cb5881b906

fixing older nightlies

view details

push time in 25 days

fork przygienda/semver

Parser and evaluator for Cargo's flavor of Semantic Versioning

fork in 25 days

issue openeddtolnay/semver

1.0.4 broke older nightlies

error[E0658]: the unsafe_op_in_unsafe_fn lint is unstable --> /b/workspace/PVT_DCB214_AUTO_EVPN/obj/common/build/rust/cargo_home/juniper/registry/src/cdo-jss-artifactory.juniper.net-97e0f04ae14acc60/semver-1.0.4/src/lib.rs:66:50 | 66 | #![cfg_attr(not(no_unsafe_op_in_unsafe_fn_lint), deny(unsafe_op_in_unsafe_fn))] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: see issue #71668 https://github.com/rust-lang/rust/issues/71668 for more information = help: add #![feature(unsafe_block_in_unsafe_fn)] to the crate attributes to enable

created time in 25 days

issue commentdimbleby/mio-extras

Support for mio 0.7?

yeah, 0.7 definitely lowered mio qualilty. I'm trying to move to 0.7 but gave up due to lack of timers as well. Looked quickly @ what it would take to pull this crate up to 0.7 but yeah, MIO architecture changed drastically on 0.7 and not for the better.

jgallagher

comment created time in 2 months

startedonurzdg/mio-misc

started time in 2 months

issue commentAmanieu/intrusive-rs

Optimize RBTree by keeping #elements & min & max element @ top of tree

I found a combination of lifetimes that work, unfortunately it's a mix of 'a and for <'b>

tedious

impl<'a, A> DirtyRBTree<'a, A> where A: Default + Adapter, <A as Adapter>::LinkOps: RBTreeOps, { fn i_get_mut(&mut self) -> &mut RBTree<A> { self.dirty = true; &mut self.tree }

fn i_get(&self) -> &RBTree<A> {
    &self.tree
}

fn i_is_dirty(&self) -> bool { self.dirty }

fn i_clear_dirty(&mut self) { self.dirty = false; }

fn i_min(&'a self) -> Option<<<A as Adapter>::PointerOps as PointerOps>::Pointer>
    where
        A: for <'b> KeyAdapter<'b> ,
        for <'b> <<A as Adapter>::PointerOps as PointerOps>::Pointer: Clone,
        <A as KeyAdapter<'a>>::Key: Ord,
{
    let tree : &RBTree<A> = self.i_get();
    tree.lower_bound(Unbounded).clone_pointer()
}

}

przygienda

comment created time in 2 months

issue commentAmanieu/intrusive-rs

Optimize RBTree by keeping #elements & min & max element @ top of tree

well, loolking @ it & right now I'd also like to know whether the tree changed, i.e. mark it dirty when elements get inserted/removed (well, at least when the min/max changed). I try to implement a wrapper (maybe a better way to go about this business since otherwise generic RBTree will start get polluted).

So, utter mystery in the following code. the first assignment works fine, it goes directly over the RBTree and can run lower_bound but when I define a generic min() with bounds it tells me the key is not Ord. Well, the RBTree should somewhere contrain the key to Ord (and it seems to somehow in inner_lower_bound but unfortunately this does not seem to work when calling it in the generic implemenation of the surrounding structure). Any clue? How comes the i32 Ord is not percolating down in the generic?

/// wraps an RBTree to mark it dirty any time we pull a mutable /// reference to it and provide min/max pub struct DirtyRBTree<A> where A: Default, A: for<'a> KeyAdapter<'a>, // for<'a> <A as KeyAdapter<'a>>::Key: Ord, <A as Adapter>::LinkOps: RBTreeOps, // <<A as Adapter>::PointerOps as PointerOps>::Pointer: Clone, // <A::PointerOps as PointerOps>::Value: Debug { tree: RBTree<A>, dirty: bool, }

impl<A> Default for DirtyRBTree<A> where A: Default, A: for<'a> KeyAdapter<'a>, // for<'a> <A as KeyAdapter<'a>>::Key: Ord, <A as Adapter>::LinkOps: RBTreeOps, // <<A as Adapter>::PointerOps as PointerOps>::Pointer: Clone, // <A::PointerOps as PointerOps>::Value: Debug { fn default() -> Self { Self { tree: RBTree::new(A::default()), dirty: false, } } }

impl<A> DirtyRBTree<A> where A: Default, A: for<'a> KeyAdapter<'a>, // for<'a> <A as KeyAdapter<'a>>::Key: Ord, <A as Adapter>::LinkOps: RBTreeOps, // <<A as Adapter>::PointerOps as PointerOps>::Pointer: Clone, // <A::PointerOps as PointerOps>::Value: Debug { fn get_mut(&mut self) -> &mut RBTree<A> { self.dirty = true; &mut self.tree }

fn get(&self) -> &RBTree<A> {
    &self.tree
}

fn is_dirty(&self) -> bool { self.dirty }

fn clear_dirty(&mut self) { self.dirty = false; }

fn min(&self) -> Option<<<A as Adapter>::PointerOps as PointerOps>::Pointer>
    where
            for <'a> <A as KeyAdapter<'a>>::Key: Ord,
            <<A as Adapter>::PointerOps as PointerOps>::Pointer: Clone, {
    self.tree.lower_bound(Unbounded).clone_pointer()
}

}

pub struct inside { key: i32, v: RBTreeLink, }

intrusive_adapter!(pub keyad = Rc<inside>: inside { v: RBTreeLink } );

impl<'a> KeyAdapter<'a> for keyad { type Key = i32; fn get_key(&self, x: &'a inside) -> Self::Key { x.key } }

#[derive(Default)] pub struct outside { tree: DirtyRBTree<keyad>, }

fn main() { let t = outside::default();

let minv = t.tree.get().lower_bound(Unbounded).get();
let overmethod = t.tree.min();

}

przygienda

comment created time in 2 months

issue commentAmanieu/intrusive-rs

Optimize RBTree by keeping #elements & min & max element @ top of tree

sounds good. I see I get to it.

On Fri, Jul 30, 2021 at 11:39 PM Amanieu ***@***.***> wrote:

I can accept a pull request to add min and max, those are useful to have around.

However len is a bit tricker: none of the other intrusive collections track a length, and it is generally quite easy to track externally on the side. I would prefer not tracking len for that reason.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Amanieu/intrusive-rs/issues/62#issuecomment-890167951, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANDIC2SEZMYJOXPZIBYWCDT2ML2DANCNFSM5BJCCPGQ .

przygienda

comment created time in 2 months

issue openedAmanieu/intrusive-rs

Optimize RBTree by keeping #elements & min & max element @ top of tree

very common to ask how many elements in the tree & smallest/largest element. Implementation would benefit from having

len, min, max

@ the top of the tree and according methods.

if you think you'd pull that up I can implement it.

created time in 2 months

issue commentprzygienda/dot-rust

Subgraph support

wiating still for this to be finished before merging. thx for the effort

naturallymitchell

comment created time in 2 months

push eventprzygienda/dot-rust

Sanpi

commit sha 40ff3522b160751f1408c8b3def2d5ed75349df0

Sets edition to 2018

view details

Tony Przygienda

commit sha f11625c873a5f37a524a94e5d17db855e48eeede

Merge pull request #13 from sanpii/edition-2018 Sets edition to 2018

view details

push time in 2 months

PR merged przygienda/dot-rust

Sets edition to 2018
+9 -8

0 comment

2 changed files

sanpii

pr closed time in 2 months

push eventpthubert/evpn-host-injection

prz@zeta2.ch

commit sha 8389e332897e25dae7acd9509a67f77436174989

corrected address

view details

push time in 3 months

push eventpthubert/evpn-host-injection

prz@zeta2.ch

commit sha 766f62caa0920043d81e1bfd1a253b37834c8c9e

newest nrli fixes

view details

push time in 3 months

push eventpthubert/evpn-host-injection

prz@zeta2.ch

commit sha f185d059e059363a02373ce361d4184e4c734c7f

clarified A and U bit behavior. corrected move on same ESI (multihoming)

view details

push time in 3 months

push eventpthubert/evpn-host-injection

prz@zeta2.ch

commit sha 01e6fbb08a8ee7736d2822924f3315662456cf9f

clarified A and U bit behavior. corrected move on same ESI (multihoming)

view details

push time in 3 months

push eventpthubert/evpn-host-injection

prz@zeta2.ch

commit sha 032aece7d4836a0127b92074dcc4e7ecabd0cf78

Wen's comments, mild massage of figures

view details

push time in 3 months

push eventpthubert/evpn-host-injection

prz@zeta2.ch

commit sha 028a8b48e035e31dfc141f8c034b334a6a923e57

added first version of EVPN

view details

prz@zeta2.ch

commit sha 3485face5cbe699f24035621a51c5c6e5a781948

Merge remote-tracking branch 'origin/main' # Conflicts: # evnp-host-injection.txt

view details

prz@zeta2.ch

commit sha 02d7c30a1dccc46971b1e879e6c75b0075a8f4fe

added first version of EVPN

view details

push time in 3 months

push eventpthubert/evpn-host-injection

prz@zeta2.ch

commit sha 195243417585c01d53d8a232baa3cd45535a985a

build command

view details

prz@zeta2.ch

commit sha 55169cecab8662291bcd2975cffd843f6dbbb6c5

Merge remote-tracking branch 'origin/main'

view details

push time in 3 months