Comments (33)
So, the breakage should be halting in the not-so-distant future. But if you feel like you need more focus, that could be a good reason to break things up.
I do think it's really worthwhile to try to keep some group efforts going, and in particular it'd be nice to have some means of "staging" collections and utils around them for eventual std
inclusion, but you could consider having a github organization or some such for doing that.
from collect-rs.
Another possible option for the immediate future would be to have many crates inside of this one repository. Each would be published separately, but the management and group effort could stay centralized around this repository.
I do somewhat agree that a crate-per-collection may be a good way forward here.
from collect-rs.
I'd also note I'm getting a bit burnt out on collection code-review, which I find much more intensive than reviewing other kinds of changes. It's subtle, complicated, and often brushes up against unsafe
(unclear semantics and all). Not having a central repo would relieve a bit of the pressure as people can just make their whatever collection crates and I'm not blocking them from making changes or landing their latest whatevermajig.
Having some kind of... club...(?) of people interested in working on collections stuff could be a good idea. You have a collection design, you want someone to review it, you ping the club.
from collect-rs.
I'm totally in agreement. For any one person, there only tends to be a few modules they care about. I found myself burnt out on data structures review too.
A club sounds fun. Can we get t-shirts?
from collect-rs.
I approve, but I really appreciate the group maintenance and conventions effort which is much harder with many disparate crates and authors and I would be sad to lose it. We should figure out a good way to keep working together.
from collect-rs.
I also approve, though there is definitely value in enforcing conventions and upkeep through a single repo. A GitHub organization might be useful.
from collect-rs.
I have made https://github.com/contain-rs (shout-outs to cmr for the fantastic pun).
from collect-rs.
Crates to make:
- compare (done, unpublished atm, not sure about crate naming/ownership story)
- tree (should map and set be separate crates...?)
- trie (should map and set be separate crates...?)
- interval_heap
- linked_hash_map
- lru_cache
- blist
- enum_set
- immut_slist
- linked_list (currently proto::DList)
- linear_map
- par_vec
- ordered_iter
- string_joiner
from collect-rs.
Good progress today.
CC @stepancheg @sellibitze @csouth3 @csherratt
This is happening, your code is moving/moved.
from collect-rs.
Thanks for the all the hard work, @gankro et al! This issue has slipped my attention until you mentioned my name. But I agree with everything that's been said here.
from collect-rs.
@huonw has set up highfive and homu for us under the @FlashCat bot:
Of particular interest: http://huon.me:54857/queue/all
from collect-rs.
Thanks for the heads up Gankro, everything looks great to me here!
from collect-rs.
@gankro that's awesome. So we should mark PRs using @FlashCat instead of @bors, and it'll work like in rust-lang?
from collect-rs.
@reem Modulo bugs, yes. See contain-rs/linked-hash-map#2 for my experiments with using the functionality. Basically if you r+ it seems to get stuck in an infinite verification step. Not sure what exactly what went wrong. Maybe @barosl has an idea.
from collect-rs.
I've made stub repos for linear-map, par-vec, and string-joiner. If someone wants to take any of those migrations over, that would be super keen.
Otherwise I'm kinda unsure what to do with immut-slist and tree-map.
See #152 for immut-slist. immut is a weird name/convention to eternalize in a crate name. Then again immut-slist is mostly a proof-of-concept.
See #137 for tree-map. Basically we have a tricky naming/conventions issue. When we migrated trie-map we renamed it to trie, and actually renamed the collections to Map and Set so that you have trie::Map and trie::Set. But @apasel422 scooped tree in crates.io for his experimental replacement.
from collect-rs.
Hmm. It may make more sense to have separate crates for maps and sets after all, mainly because tree
doesn't really mean anything on its own. For example, if the standard library's HashMap
were split into its own crate, I wouldn't expect it to be called hash
, necessarily.
from collect-rs.
immut-slist
-> shared-slist
?
from collect-rs.
@huonw Sounds like something that might use mutexes or some lock-free strategy to be mutably shared, where this is persistent.
from collect-rs.
Maybe we should group persistent collections together? I feel like we'd just get into the same situation as with collect down the line though.
from collect-rs.
Modulo bugs, yes. See contain-rs/linked-hash-map#2 for my experiments with using the functionality. Basically if you r+ it seems to get stuck in an infinite verification step. Not sure what exactly what went wrong. Maybe @barosl has an idea.
I think I fixed it: contain-rs/blist#1 (comment) Basically a problem with how travis handles organisations. (tl;dr: fix: activate travis in new repos via @FlashCat's account.)
Sounds like something that might use mutexes or some lock-free strategy to be mutably shared, where this is persistent.
I don't have that sense ("shared" == Rc
and Arc
for me), but I suppose persistent-slist
is another possibility too.
from collect-rs.
@gankro I can migrate par_vec
, seeing as I created it
from collect-rs.
@cybergeek94 That would be great! Check out any of the other repos for the format we're using.
from collect-rs.
@gankro Just curious, what would be the procedure to propose a new crate to the group?
from collect-rs.
@cybergeek94 I think we're looking at https://github.com/contain-rs/discuss ala rust-lang/rfcs right now
from collect-rs.
@gankro Yeah I saw that not long after I sent the previous message. I'm looking at the par_vec
repo and it looks like I can't fork it or submit PRs while it's empty. How should I proceed?
from collect-rs.
Ah! I'll make a dummy README
from collect-rs.
dummy'd
from collect-rs.
@gankro: Another crate name option for migrating {TreeMap, TreeSet}
is simply bst
, with the types being moved to bst::{Map, Set}
.
from collect-rs.
string_joiner and linear_map are all that's left
from collect-rs.
I'd like to move linear_map
. What do I have to do?
from collect-rs.
@tbu- I've pushed up a dummy repo you can make a PR against. https://github.com/contain-rs/linear-map
Check out https://github.com/contain-rs/blist for an example migration (basically just copy the src file to be lib.rs, add the copyright header, fix the cargo.toml, fix the README, and fix feature-flags/externs.
from collect-rs.
I've also pushed a dummy repo for string-joiner and set up (I think) the last of the gh-pages and travis stuff.
from collect-rs.
Whoops, string-joiner still hasn't been migrated!
from collect-rs.
Related Issues (20)
- solve the borrow issue with the LRU cache? HOT 12
- Try out some collection traits HOT 4
- Doc tests not running HOT 3
- Implement `into_iter` method for all collections
- Enhance `LinkedHashMap` HOT 3
- Add Haskell-style traversables HOT 3
- Document trait impl behavior HOT 2
- Compilation fails on rust master
- Clean up and enhance `TreeMap` HOT 7
- `TreeMap::insert`'s behavior differs from `{BTreeMap, HashMap}` HOT 5
- Deprecate `trie` in favor of external crate
- Push new version to crates.io HOT 1
- immut_slist -> cons-list?
- collect does not compile on nightly 3-21 HOT 2
- version was not bumped on crates.io? HOT 4
- Check out cool no-unsafe-code intrusive-style dlist HOT 3
- Tone down some greedy benches? HOT 1
- Some types are missing `Debug` impls HOT 3
- Be consistent with `Keys` and `Values` iterators HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from collect-rs.