miniscript-kt
llvm-project
miniscript-kt | llvm-project | |
---|---|---|
1 | 393 | |
9 | 30,536 | |
- | 2.3% | |
10.0 | 10.0 | |
over 5 years ago | 7 days ago | |
Kotlin | LLVM | |
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.
miniscript-kt
-
MiniScript Ports
There are two MiniScript ports that run on the JVM (Java Virtual Machine). The first one was actually written for Kotlin, and is available here. It was last updated over 4 years ago, so it's probably a little out of date now, but would be an excellent starting point and probably wouldn't take much effort to refresh.
llvm-project
-
Falsehoods programmers believe about null pointers
I'm excited about -fbounds-safety coming soon: https://github.com/llvm/llvm-project/commit/64360899c76c
-
How Jane Street accidentally built a better build system for OCaml
okay can you at least tell me how the architecture of https://github.com/llvm/llvm-project is "bad"?
-
The preview of -fbounds-safety is now accessible to the community
https://github.com/llvm/llvm-project/blob/main/clang/docs/Bo...
- Clang getting more aggressive about optimizing undefined behavior
- Clang now more aggressively uses undefined behavior on pointer addition overflow
-
Branchless UTF-8 Encoding
Incidentally, this automatic branch-if-zero from LLVM is being improved.
First of all, a recent LLVM patch apparently changes codegen to use CMOV instead of a branch:
https://github.com/llvm/llvm-project/pull/102885
Beyond that, Intel recently updated their manual to retroactively define the behavior of BSR/BSF on zero inputs: it leaves the destination register unmodified. This matches the AMD manual, and I suspect it matches the behavior of all existing x86-64 processors (but that will need to be tested, I guess).
If so, you don't need either a branch or CMOV. Just set the register to 32 and then run BSR. If the value is zero, then BSR leaves the register unmodified and you get 32.
Since this behavior is now guaranteed for future x86-64 processors, and assuming it is indeed compatible with all existing x86-64 processors, LLVM will no longer need the old path regardless of what it's compiling for.
Note that if you're targeting a newer x86-64 version, LLVM will just emit TZCNT, which just does what you'd expect and returns 32 if the input is zero (or 64 for a 64-bit TZCNT). But as the blog post demonstrates, many people still build for baseline x86_64.
(Intel does document one discrepancy between processors: "On some older processors, use of a 32-bit operand size may clear the upper 32 bits of a 64-bit destination while leaving the lower 32 bits unmodified.")
-
Size Optimization Tricks (2022)
Bolt can do quite a lot of optimizations: https://github.com/llvm/llvm-project/tree/main/bolt
-
C: Simple Defer, Ready to Use
That's from the OP blog, the intention of macro mess is to generate uniquely named local lambda.
Cleaner version is like: https://github.com/llvm/llvm-project/issues/100869#issue-243...
-
Debugging memory corruption: who the hell writes "2" into my stack?
Another possibility is to avoid it in the first place by not allowing C++ function pointers that are not marked noexcept to be passed to C functions. I filed bugs against both GCC and LLVM requesting warnings:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118263
https://github.com/llvm/llvm-project/issues/121427
If/when they are implemented, they will become errors with -Werror.
-
Integer Type Performance
My code is compiled against Clang trunk built at 9919295c with -O3 for the optimization level.
What are some alternatives?
MCreator - MCreator is software used to make Minecraft Java Edition mods, Bedrock Edition Add-Ons, and data packs using visual graphical programming or integrated IDE. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
miniscript.ts - A MiniScript implementation written in TypeScript
windmill - Open-source developer platform to power your entire infra and turn scripts into webhooks, workflows and UIs. Fastest workflow engine (13x vs Airflow). Open-source alternative to Retool and Temporal.
minimicro-sysdisk - Contents of the /sys disk for the Mini Micro virtual computer
gcc
miniscript - source code of both C# and C++ implementations of the MiniScript scripting language
cosmopolitan - build-once run-anywhere c library
peg-ms - A pattern-matching library for MiniScript
Lark - Lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity.
miniscript-nodejs - A Node.js MiniScript runner
dmd - dmd D Programming Language compiler