Coder Social home page Coder Social logo

symtern's People

Contributors

dralley avatar insaneinside avatar rnewman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

symtern's Issues

Is this crate still active?

I've been playing around with it because it seems like it does exactly what I need, but I'm cautious about doing that when it also seems like it's gone inactive, with a couple of caveats still scattered around the documentation and bug tracker.

Hash collisions unhandled in `Basic` pool

The symbol pool implemented in basic.rs uses a value's hash as the key to pool's HashMap instance, which effectively bypasses any collision handling that would normally be provided by the map. This design was meant to avoid the overhead and additional complexity of using something like Rc where shared ownership isn't actually required โ€” but clearly needs some rethinking.

Travis builds failing

Travis builds are failing because travis-cargo no longer works.
It's time to take the time to gain a more thorough understanding of how Travis works, and then update .travis.yml.

Specialize Pool for str to use Box<str> internally instead of String

The generalized structure of Pool uses the ToOwned trait to store it's T's internally.
For str this leads to the usage of String as internal data type for the underlying Vec<_>.
This is inferior to Box<str> which requires less memory than String since it is missing the capacity field which makes it approximately 33% smaller than String.
So in theory using Box<str> instead of String should result in faster access times due to less cache-trashing.

This can be addressed by specializing Pool for str to store Box<str> instead of String.
The drawbacks are that specialization is currently a nightly feature, however it should be possible to implement this specialization as op-in for depencendies that are okay with nightly versions of the compiler.

Also there should be trait impls for the different kinds of String types within rust.
So interning a &str should copy the contents while String or Box<str> should move them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.