sokol-tools
evcxr
sokol-tools | evcxr | |
---|---|---|
5 | 75 | |
201 | 5,233 | |
- | 1.9% | |
7.3 | 8.6 | |
2 days ago | 27 days ago | |
C++ | Rust | |
MIT License | GNU General Public License v3.0 or later |
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.
sokol-tools
-
Stop Hiding the Sharp Knives: The WebAssembly Linux Interface
I would really love being able to take any POSIX command line tool, compile that to WASI, and run it on (at least) Linux, Windows and macOS like a regular executable without having to install a separate WASI runtime.
I'm a 'WASI convert' since I was able to take an ancient 8-bit assembler written in the mid-90's (http://xi6.com/projects/asmx/), compile that as-is with the WASI SDK (https://github.com/WebAssembly/wasi-sdk), and then integrate it into a VSCode extension (https://marketplace.visualstudio.com/items?itemName=floooh.v...).
A similar problem is I have is a shader cross-compiler (https://github.com/floooh/sokol-tools) which needs to run Linux, macOS and Windows and takes too long to build locally, thus I currently need to distribute that as pre-built binaries. Compiling this to WASI works, but the filesystem access restrictions built into current wasm runtimes are a hassle to manage, and it would require a WASI runtime to be separately installed).
-
Meta Releases Intermediate Graphics Library
Sokol also provides a solution for shader cross-compilation (https://github.com/floooh/sokol-tools/blob/master/docs/sokol...), so you only need to write your shaders once no matter if you're targeting OpenGL, Metal, or DirectX.
There are other tools you could use out there with IGL, but Sokol's solution streamlines the whole process.
-
Go 1.21 will (likely) have a static toolchain on Linux
> but that is only for software written in C, it does not work with C++.
I have a pretty complex C++ command line tool which works just fine with MUSL (https://github.com/floooh/sokol-tools). What potential problems should I be aware of?
-
Zig: The Modern Alternative to C
In practice it works very well though, I experimented replacing cmake with build.zig for a 'not-quite-trivial' C++ project, and tbh for cross-platform code that's a lot nicer wrestling with cmake and all the C/C++ compiler toolchain differences:
https://github.com/floooh/sokol-tools/blob/master/build.zig
-
Qb – Zero-configuration build system to quickly build C/C++ projects
Yes, here is an example:
https://github.com/floooh/sokol-tools/blob/master/build.zig
Compared to cmake, this means giving up IDE support like Xcode or Visual Studio though, it's really just a pure build system.
evcxr
-
Scriptisto: "Shebang interpreter" that enables writing scripts in compiled langs
Emacs didn't invent REPL, and it's common everywhere. For Rust: https://github.com/evcxr/evcxr/blob/main/evcxr_repl/README.m.... But heck, the compiler is reasonably fast enough that any IDE can REPL by compiling the code.
The value here is more in being able to read a script before you run it, then have it run fast, maybe tweaking something here and there. And a compiled script will run 10,000 times faster than LISP, which can be important.
-
Go: What We Got Right, What We Got Wrong
https://github.com/evcxr/evcxr can run Rust in a Jupyter notebook. It's not Golang but close enough.
-
The Hallucinated Rows Incident
The engine uses rust_decimal::Decimal to represent high precision decimal numbers, like the weight property. Serialization of RocksDB keys is done by the storekey crate. To know how Yumi's machine stores diffs, we can now ask- How does storekey serialize rust_decimal? Well, using evcxr to run Rust in Jupyter, the answer is as a null-terminated string:
- TermiC: Terminal C, Interactive C/C++ REPL shell created with BASH
- Exploring Options for Dynamic Code Changes in Rust without Recompilation (hot reloading)
- Go 1.21 will (likely) have a static toolchain on Linux
-
What’s an actual use case for Rust
In theory you should be able to create Rust notebooks (Jupyter notebook) using evcxr so maybe some AI, data analysis, prototyping make sense if you aim for good performance in final application (protype in evcxr and use notebook as reference to implement final application in Rust for speed and safety).
-
would you use rust for scripting?
You should check out evcxr
- Nannou – An open-source creative-coding framework for Rust
-
Rust vs. Haskell
There is also implementations of rust REPLs, like the beautifully named evcxr.
What are some alternatives?
libxev - libxev is a cross-platform, high-performance event loop that provides abstractions for non-blocking IO, timers, events, and more and works on Linux (io_uring or epoll), macOS (kqueue), and Wasm + WASI. Available as both a Zig and C API.
vscode-jupyter - VS Code Jupyter extension
SFML-IGL - Rendering example with Meta's Intermediate Graphics Library and SFML
polars - Dataframes powered by a multithreaded, vectorized query engine, written in Rust
c - Compile and execute C "scripts" in one go!
jupyter-rust - a docker container for jupyter notebooks for rust
libddwaf - Datadog's WAF
rust-script - Run Rust files and expressions as scripts without any setup or compilation step.
igl - Intermediate Graphics Library (IGL) is a cross-platform library that commands the GPU. It provides a single low-level cross-platform interface on top of various graphics APIs (e.g. OpenGL, Metal and Vulkan).
bincode - A binary encoder / decoder implementation in Rust.
qb - Zero-configuration build system to very quickly build C/C++ projects.
cargo-script - Cargo script subcommand