tools/native/lib.sh passes -implib rather than /implib: Git Bash rewrites an argument starting with / into a Windows path, and lld-link was handed 'C:\Program Files\Git\implib;...'. Both DLLs import KERNEL32 alone, so no C++ runtime ships beside them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| lib | ||
| native | ||
| tests | ||
| echo.ludic | ||
| index.ludic | ||
| native.ludic | ||
| package.ludic | ||
| README.md | ||
ludic.nativeecho
The worked example of a package that carries a native library (phase 15). It exists to be copied and to be tested: nothing in a game needs it.
import "ludic.nativeecho"
package.ludicnames the library per target (native "macos-arm64" "lib/macos-arm64/libnativeecho.dylib").native/shim/nativeecho.cis the whole library: a sum over a float slice, a scan that "calls back" once per value over a threshold, and the drain the package empties those records through.native/build.shbuildslib/<target>/throughtools/native/lib.sh(no upstream to fetch).native.ludicdeclares the symbols;echo.ludicis the state, the verbs and the facts.
EchoState |
the slices that cross to C (made once), and the facts queue |
echo_put(st, x) -> bool, echo_clear(st) |
fill the slice |
echo_sum(st) -> float |
the sum, in C |
echo_scan(st, over) -> int |
C records each value over over; they arrive on echo_facts(st) as EchoFact { index, value } |
echo_lost() -> int, echo_twice(x: long) -> long |
the lost-record count, and a 64-bit round trip |
The rules it keeps are the shim rules in packages/README.md.
ludic test packages/ludic.nativeecho runs it against the real library.