- Raku 57.3%
- Zig 40.9%
- Perl 0.9%
- Python 0.4%
- C 0.2%
- Other 0.1%
|
Coleman McFarland
a99ace500d
io/dirops: filter "." and ".." from getdents64 output
`DirIter.next()` in `src/io/dirops.zig` (the libc-free
`getdents64`-based replacement for `readdir`) was returning "."
and ".." verbatim from the kernel. Rakudo's
`Rakudo::Iterator::DirTest` (in rakudo/src/core.c/Rakudo/
Iterator.rakumod:1513) documents the assumption
"Moar & JVM don't produce '.' and '..', so we need to fake them"
and prepends the two dots via `$!dots := nqp::list_s('.','..')`.
Result: `dir(:test)` returned four entries matching `.`|`..`
(the two the class prepends plus the two the kernel returns),
which broke `roast/S32-io/dir.t` tests 2, 5, 6, 7, 9, 10, and 17.
Fix: skip "." and ".." inside `DirIter.next()` — a tight
byte-level check on the first 3 bytes matches libc `readdir`'s
convention that Rakudo depends on. No allocation, no strcmp.
Regression: `roast/S32-io/dir.t` now 17/17 (was 10/17). Full
build gate not re-run — the change is a single-function edit
inside the io module with no bootstrap-touching semantics.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .builds | ci: add Debian build.sr.ht manifest for moary | |
| .claude/skills/convert-extern | CLAUDE.md + convert-extern skill: capture hybrid B/F and recent gotchas | |
| build | just: add rebuild-rakudo recipe + MVM_BUILD_SKIP_NQP env | |
| build-stats | update gitignore | |
| docs | arch review: 9 notes + 16 inline ARCH comments | |
| lib | Add getattrsref_u and getlexref_nu ops | |
| rakudo | rakudo: latest.patch — 8 upstream cherry-picks (2026年07月09日) | |
| roast | raku-tap: in-memory fudge port + 0/0 classify + RAKULIB self-set | |
| scripts | Add raku-tap: Zig TAP test runner replacing prove | |
| src | io/dirops: filter "." and ".." from getdents64 output | |
| test | test: rewrite vm_spesh_slots for graph_types.Graph shadow | |
| tools | tools/analyze_void_returns: filter structural void; show adjusted % | |
| .gitignore | raku-tap: in-memory fudge port + 0/0 classify + RAKULIB self-set | |
| build.zig | spesh: value-shape sweep — facts.zig add_bb_facts switch (30+ sites) | |
| build.zig.zon | R5.5: drop libuv from build.zig.zon — libuv removal complete | |
| CLAUDE.md | A note for claude | |
| Justfile | just: DRY precomp clear + parameterize build/build-fast | |
| LICENSE | docs: consolidate docs-old into vm-reference.adoc | |
| moary.adoc | Convert JIT stubs and MVM_exepath from C to Zig, add numeric smoke test | |
| NQP_VERSION | Remove nqp/ directory — build no longer depends on it | |
| README.adoc | add zio mention to readme | |
Moary (MoarVM + NQP + Rakudo)
This is a unified repository containing the full Raku toolchain: MoarVM, NQP, and Rakudo. It uses a Zig-based build system that compiles all three components from source in a single invocation.
Build
Requires Zig and just:
just build # builds MoarVM + NQP + Rakudo, installs to ./install/
just test # builds then runs: raku -e 'say "Hello from Raku!"' and nqp-m -e 'say(42)'
just clean # removes build artifacts
Feature overview
Some key features provided by MoarVM include (todo double check):
-
Meta-object programming, using the 6model design
-
Precise, generational, and parallel GC
-
Unicode 15 support (Unicode Character Database, encodings, normalization)
-
First-class code objects, lexical variables and closures
-
Exceptions
-
Continuations
-
Bounded serialization
-
Runtime loading of code
-
Big integers
-
A range of IO and process support, including asynchronous sockets, signals, timers, and processes
-
Native calling and native pointer manipulation
-
Threads, mutexes, condition variables, semaphores, and blocking queues
-
Bytecode specialization by type, and numerous optimizations (including resolution of method calls and multiple dispatch, dead code elimination, inlining, on stack replacement, scalar replacement, and partial escape analysis)
-
Instrumentation-based profiling of call frames and allocations
-
Heap snapshotting
Removed Features
To ease the transition to Zig, we’ve removed some features
-
JIT compilation
-
debugger
-
NativeCall and ffi
These will be re-implemented after the codebase has been broken down to it’s essentials.