SaRCAsm Compiles OpenSSL Assembly With Memory Safety
SaRCAsm is now powerful enough to compile OpenSSL's X86_64 assembly. It's a world first: memory-safe constant-time crypto. Here's my clanker's report: The final gate is fully green. The task is complete — everything is committed at HEAD 498c3a6 (branch deluge), working tree clean, and the entire flow validated end-to-end in a 1h27m full ./build_all_glibc.sh run.…
SaRCAsm is now powerful enough to compile OpenSSL's X86_64 assembly. It's a world first: memory-safe constant-time crypto. Here's my clanker's report: The final gate is fully green. The task is complete — everything is committed at HEAD 498c3a6 (branch deluge), working tree clean, and the entire flow validated end-to-end in a 1h27m full ./build_all_glibc.sh run. ## Final Report: OpenSSL 3.6.4 with assembly compiled memory-safely through sarcasm ### Outcome - OpenSSL 3.6.4 test suite: Files=352, Tests=4561, Result: PASS — identical to the no-asm baseline, with the asm dispatch paths…
Read full post
(AES-NI/SHA-NI/AVX2/AVX512/IFMA) proven live by sabotage testing. Verified standalone and inside the full glibc build gate. - Fil-C full test suite: 6285 tests, SUCCESS (sarcasm tests grew 907 → 1044; 2 pre-existing platform skips). - All 43 x86_64 perlasm outputs compile through sarcasm (padlock excluded via no-padlockeng — VIA-only engine with unmodelable implicit-memory instructions; uplink is Windows-only), and every one was runtime-verified against independent vectors (FIPS-197, RFC 8439, SHA-1/256/512, SHA3, GHASH/GCM, Poly1305, P-256/X25519 field+point math, Montgomery/RSA-Z against python references — sarcasm output is bit-identical to native hardware). ### What was built Sarcasm features (all with filc/tests regression tests): global variables (same-file data objects mirroring clang's pizlonatedDO_ layout + extern #! global ptr getter calls), local functions (per-caller cloning with −8 return-address compensation, mid-label/loop regions, nested calls), alloca extensions (fixed/dynamic/aligned regions with direct+indexed redirect, phantom SP flows), fast-CC stack words (>4-word signatures incl. SysV stack-arg remapping), .byte decoding + pattern decoder, cross-function jumps (B1 → call+epilogue; B2 → shared-tail cloning; alias entries), #! funcref, .section .init, mid-function SP adjustments, instruction modeling (high-byte regs, movbe, SHA-NI, AVX512 {k}-masked, hi-vec/opmask FP saves), scalability fix (fail-stub liveness clique: 75GB OOM → 7.4GB on the 136K-line file), and ~12 correctness fixes (partial-register liveness, flagDef mangling, ptrflow swap widening, …). OpenSSL perlasm: #! annotations throughout (gas-compatible — machine-code equivalence proven), central signature injection + byte-emitter neutralization in x86_64-xlate.pl, per-generator region/ptr annotations and gated structural fixes (page-walk removal, xchg-rsp, rolling-window avx2 → avx delegation, cross-object pointer idioms, unaligned-access paths). Inline asm disabled (guarded, as permitted — only 2 instances): bn/asm/x86_64-gcc.c (uses bn_asm.c under __FILC__; unsupported constraints/pointer args) and DES rorl (C fallback under __FILC__). Build integration: build_openssl364.sh (asm enabled, no -yolo-assembler, no-padlockeng) wired into build_all_slow.sh; Configure skips -Wa under sarcasm. OpenSSL 3.5.7 remains untouched in pizfix. This removes the need for the zunsafe_call mechanism for OpenSSL — the assembly is now itself memory-safe, linked naturally with Fil-C code.
Samuel Times preserves the original link so every selection remains auditable.