CBQN | gravity | |
---|---|---|
4 | 4 | |
297 | 4,268 | |
- | - | |
9.5 | 5.1 | |
about 11 hours ago | 9 months ago | |
C | C | |
GNU General Public License v3.0 only | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
CBQN
-
Building a faster hash table for high performance SQL joins
Worth pointing out that this can depend a lot more on fiddly details than you might expect. In particular, you're dealing with a small fixed width allowing the hash to be stored in the table instead of the key. The article emphasizes variable-length keys, and I don't see any specialization on key sizes (if 4- and 8-byte keys aren't common then this makes sense; if they are then I'd expect dedicated table code for those sizes to be valuable). And set lookups are also just a bit different from value lookups. I think these cases are different enough that I have no idea if the results would carry over, although I can see how the bidirectional approach would reduce probing more than RH which seems good.
...and since I've done a lot of work with Robin Hood on small-key lookups, I can point out some little tweaks that have made a big difference for me. I have 8-byte lookups at just over 3ns/lookup[0], albeit at a very low load factor, typically <50%. A key step was to use the maximum possible hash as a sentinel value, handling it specially in case it shows up in the data. This way, instead of probing until finding an empty bucket or greater hash, probing just finds the first slot that's greater than or equal to the requested key's hash. So the lookup code[1] is very simple (the rest, not so much). The while loop is only needed on a hash collision, so at a low load factor a lookup is effectively branchless. However, these choices are specialized for a batched search where the number of insertions never has to be higher than the number of searches, and all the insertions can be done first. And focused on small-ish (under a million entries) tables.
[0] https://mlochbaum.github.io/bencharray/pages/search.html
[1] https://github.com/dzaima/CBQN/blob/5c7ab3f/src/singeli/src/...
-
Having trouble installing bqn into arch
It sounds like you might be trying to install the package manually from the AUR? Generally you should do this only once, for an AUR helper such as pacaur, so you can install with pacaur -S bqn. The instructions in the CBQN repository also work for installing without a package manager, which is the easiest way to enable replxx.
-
Programming Style Influences
It's still utterly verbose compared to the ngn/k source or even CBQN source.
-
BQN Example
CBQN Source, and Install Instructions
gravity
-
Ask HN: Parrot language copycat my Gravity source code. What can I do?
I found out that the Parrot programming language (https://github.com/parrot-language/parrot) did copycat line by line my Gravity programming language (https://github.com/marcobambini/gravity).
I know that I used a very permissive license and that the project can be forked and modified by anyone but this is a theft more than a fork.
What can I do in this situation?
- When does garbage collector start in Gravity?
- Binding a Language to Gravity
-
Lua's Lack of “Batteries”
This is gonna be subjective, because it depends on what your priorities are.
The two alternatives at the top of my list are Gravity and Wren. They are both designed for the same general profile that Lua has—a scripting language, safe to use, embeddable, with a small VM (low code size).
- https://github.com/marcobambini/gravity
- https://wren.io/
The language design choices are nice and familiar to people who are used to other existing languages. Lua is a bit radical.
Two other options are AngelScript and Squirrel, which are both a bit older and more mature than Gravity and Wren. In my opinion they are
- http://www.angelcode.com/angelscript/
- http://squirrel-lang.org/
Finally, it’s much more feasible these days to embed something like Mono, and Guile has gotten a lot better.
What are some alternatives?
BQN - An APL-like programming language. Self-hosted!
umka-lang - Umka: a statically typed embeddable scripting language
Singeli - High-level interface for low-level programming
blade - A modern general-purpose programming language focused on enterprise Web, IoT, and secure application development.
CSpydr - A static typed low-level compiled programming language inspired by Rust and C
luaforwindows - Lua for Windows is a 'batteries included environment' for the Lua scripting language on Windows. NOTICE: Looking for maintainer.
adorad - Fast, Expressive, & High-Performance Programming Language for those who dare
tl - The compiler for Teal, a typed dialect of Lua
wasm-micro-runtime - WebAssembly Micro Runtime (WAMR)
inspect.lua - Human-readable representation of Lua tables
hashtable-benchmarks - An Evaluation of Linear Probing Hashtable Algorithms
zForth - zForth: tiny, embeddable, flexible, compact Forth scripting language for embedded systems