CBQN
wasm-micro-runtime
CBQN | wasm-micro-runtime | |
---|---|---|
4 | 16 | |
297 | 4,507 | |
- | 2.1% | |
9.5 | 9.7 | |
about 16 hours ago | 6 days ago | |
C | C | |
GNU General Public License v3.0 only | Apache License 2.0 |
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
wasm-micro-runtime
-
Build your own WebAssembly Compiler
Here is what you are looking for: https://github.com/bytecodealliance/wasm-micro-runtime
-
Val, a high-level systems programming language
No longer does Wasm/WASI need JS host! There are many spec-compliant runtimes built for environments from tiny embedded systems up to beefy arm/x86 racks:
- https://github.com/bytecodealliance/wasm-micro-runtime
- https://github.com/bytecodealliance/wasmtime
- https://github.com/wasmerio/wasmer
- https://github.com/tetratelabs/wazero
- https://github.com/extism/extism (disclaimer, my company's project - makes wasm easily embeddable into 16+ programming languages!)
-
Blog Post: Reasonable Bootstrap
The WASM core 1.1 infrastructure is already available in a very strict defined more or less guarantied compatible form on nearly any final target. Even on very small devices for embedded computing (WAMR takes less then 85kB and supports even trusted computing etc.) and in contexts, where usually no other low level development tools are available (for example within the context of Webbrowsers, sandboxed execution etc.)
-
WASM vs Native Rust performance
WAMR and it's different AoT preprocessing and execution modes could be even more efficient. ;)
- adding multiple optional scripting languages
-
Wasm-bpf: Build and run eBPF programs in WebAssembly
Wasm-bpf is a WebAssembly eBPF library, toolchain and runtime powered by CO-RE(Compile Once – Run Everywhere) libbpf and WAMR. It can help you build almost every eBPF programs or use cases to Wasm.
-
Ruby Adds Support for WebAssembly: What is WebAssembly and how it benefits Ruby devs?
Running a Wasm application outside the browser requires an appropriate runtime that implements the WebAssembly VM and provides interfaces to the underlying system. There are a few competing solutions in this field, the most popular being wasmtime, wasmer, and WAMR.
- WebAssembly Micro Runtime (WAMR)
-
Learning Embedded rust
A very interesting solution for high level interface access by less professional developers could be seen in pikascript, which works even on very small devices. WAMR is another project with similar capabilities. Both of them can be very well combined with core infrastructure realized as embedded rust code.
-
Wasmtime 1.0
Seems the micro runtime also released 1.0:
https://github.com/bytecodealliance/wasm-micro-runtime
But why does it not have binaries compiled and ready?
What are some alternatives?
BQN - An APL-like programming language. Self-hosted!
wasm3 - 🚀 A fast WebAssembly interpreter and the most universal WASM runtime
Singeli - High-level interface for low-level programming
zephyr - Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
CSpydr - A static typed low-level compiled programming language inspired by Rust and C
q3vm - Q3VM - Single file (vm.c) bytecode virtual machine/interpreter for C-language input
gravity - Gravity Programming Language
crun - A fast and lightweight fully featured OCI runtime and C library for running containers
adorad - Fast, Expressive, & High-Performance Programming Language for those who dare
raylib - A simple and easy-to-use library to enjoy videogames programming
hashtable-benchmarks - An Evaluation of Linear Probing Hashtable Algorithms
WASI - WebAssembly System Interface