1
0
Fork
You've already forked moary
0
No description
  • 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>
2026年07月09日 23:06:52 -04:00
.builds ci: add Debian build.sr.ht manifest for moary 2026年07月06日 18:20:42 -04:00
.claude/skills/convert-extern CLAUDE.md + convert-extern skill: capture hybrid B/F and recent gotchas 2026年04月16日 22:23:05 -04:00
build just: add rebuild-rakudo recipe + MVM_BUILD_SKIP_NQP env 2026年06月19日 16:54:28 -04:00
build-stats update gitignore 2026年02月28日 18:50:19 -05:00
docs arch review: 9 notes + 16 inline ARCH comments 2026年05月09日 22:56:14 -04:00
lib Add getattrsref_u and getlexref_nu ops 2023年12月29日 14:25:21 -05:00
rakudo rakudo: latest.patch — 8 upstream cherry-picks (2026年07月09日) 2026年07月09日 22:45:08 -04:00
roast raku-tap: in-memory fudge port + 0/0 classify + RAKULIB self-set 2026年06月20日 23:41:48 -04:00
scripts Add raku-tap: Zig TAP test runner replacing prove 2026年02月28日 01:03:28 -05:00
src io/dirops: filter "." and ".." from getdents64 output 2026年07月09日 23:06:52 -04:00
test test: rewrite vm_spesh_slots for graph_types.Graph shadow 2026年07月08日 18:17:56 -04:00
tools tools/analyze_void_returns: filter structural void; show adjusted % 2026年06月27日 22:59:56 -04:00
.gitignore raku-tap: in-memory fudge port + 0/0 classify + RAKULIB self-set 2026年06月20日 23:41:48 -04:00
build.zig spesh: value-shape sweep — facts.zig add_bb_facts switch (30+ sites) 2026年07月08日 23:24:15 -04:00
build.zig.zon R5.5: drop libuv from build.zig.zon — libuv removal complete 2026年05月13日 21:39:49 -04:00
CLAUDE.md A note for claude 2026年07月01日 22:50:19 -04:00
Justfile just: DRY precomp clear + parameterize build/build-fast 2026年06月21日 18:23:20 -04:00
LICENSE docs: consolidate docs-old into vm-reference.adoc 2026年04月17日 21:34:24 -04:00
moary.adoc Convert JIT stubs and MVM_exepath from C to Zig, add numeric smoke test 2026年02月22日 19:24:23 -05:00
NQP_VERSION Remove nqp/ directory — build no longer depends on it 2026年02月22日 07:50:24 -05:00
README.adoc add zio mention to readme 2026年04月09日 19:48:37 -04:00

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.

Maybe libuv replacement