indexing

Sound unchecked indexing using “generativity”; a type system approach to indices, pointers and ranges that are trusted to be in bounds. (by bluss)

Indexing Alternatives

Similar projects and alternatives to indexing

  • helix

    A post-modern modal text editor.

  • gitoxide

    An idiomatic, lean, fast & safe pure Rust implementation of Git

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better indexing alternative or higher similarity.

indexing reviews and mentions

Posts with mentions or reviews of indexing. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-01-24.
  • The Git source code audit, viewed as a Rust programmer
    5 projects | news.ycombinator.com | 24 Jan 2023
    Defining a newtype avoids confusing indexes of, say, a graph and a Vec, but doesn't avoid confusing indexes of two graphs

    Rust has a design pattern called lifetime branding (also called generativity), which uses phony lifetimes to prevent, at compile time, confusing indexes of two separate collections of the same type. This can also enable disabling out of bounds checks without triggering UB (because, with branding, we can be sure that the index is on bounds at the moment of creating it; essentially we move bounds check from the indexing time to the index creation time)

    Here's an earlier mention of that [0] (7 years ago), and here's a crate from 3 years ago, indexing [1] but I'm not sure about recent developments on that.

    Now, petgraph doesn't use branding for its index types, so if you have two graphs you can confuse their indexes. On the other hand, petgraph was specifically designed so that you can reuse the node and edge numbering across many graphs (so that if you have a subgraph for example, the nodes and edges share the same ids), in this situation it's kind of hard to use branding

    There's another pattern for not confusing index types which is to make different index types for each different collection and make the collection work only with that type; this is done eg. in typed-indexed-collections [2] - but it doesn't use branding so two collections with same index type have interchangeable indexes

    Anyway right now this stuff is mostly folklore but I wish it were more used.

    [0] https://www.reddit.com/r/rust/comments/3oo0oe/sound_unchecke...

    [1] https://github.com/bluss/indexing https://docs.rs/indexing/0.4.1/indexing/

    https://crates.io/crates/typed-index-collections https://www.reddit.com/r/rust/comments/hr6xcu/announcing_typ...

Stats

Basic indexing repo stats
1
99
10.0
over 4 years ago

bluss/indexing is an open source project licensed under Apache License 2.0 which is an OSI approved license.

The primary programming language of indexing is Rust.

Popular Comparisons


Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com