0.0.1
Changelog
- 9e52ea4 Add -package flag for generated Go package name.
- e59421f Add IR sanity fixtures for anon struct names and unreachable.
- fba7fe1 Add a couple of vector instructions and __memcpy_chk.
- d0cf067 Add a test
- 4fffef1 Add binarytrees benchmark as a test, and fix malloc breakage.
- 5ce9546 Add children-before-heap Subtree fixture with runtime run checks.
- f2df508 Add csmith differential fuzz tests with mise clang 14.
- 87f0b87 Add disclaimer.
- ec8e456 Add fannkuch-redux test.
- ca95df4 Add forgotten parentheses.
- 5240820 Add fprintf/abort/realloc libc stubs; map glibc _IO_FILE to os.File.
- 9b646f4 Add getchar
- 633a665 Add license and readme.
- 8007207 Add malloc and calloc to libc package.
- 0a575a9 Add mandelbrot test.
- 36ac9b7 Add memmove and memset to libc package.
- e28c467 Add nbody test.
- 7a2caa4 Add note about GC-related panics.
- dd96805 Add scripts/fuzz-janitor-loop.sh for fuzz then catalog harvest.
- 6494d87 Add source.c for every IR fixture (regression C repros).
- b189232 Add spectral-norm test.
- 36b6903 Add string functions from PDClib.
- ce713a7 Add strlen and GoString.
- eab2f5c Add varargs support.
- a00e7e4 Add vector support to some instructions.
- b3dc391 Allocate correctly-typed, garbage-colledted memory.
- 940bd01 Attempt to support truncating to odd bit sizes (like i3).
- 4d18e79 Be a little smarter about taking the address of globals.
- 5d1e1a5 Convert bool to int.
- b0764a7 Correct typo
- 6ce0018 Detect unsafe pointer casts.
- efdd8bd Do all munging of type names in one place.
- ee95e7d Don't dereference global symbols.
- 5485b81 Don't emit declarations of anonymous union types.
- bcf2752 Fix Go keywords, i8→i1 bool trunc, auto-imports; add go_issues fixture.
- 1abf3b8 Fix csmith fuzz failures: printf, udiv/urem, bitcast, labels, i64.
- 137e9ad Fix function-pointer bitcasts; map iswlower/iswupper.
- ee76927 Fix mid-function void ret; map iswalpha/iswdigit.
- 046d2ba Fix unreachable emission: real tab, not backslash-t.
- f3608d1 Fix variable name that I forgot to update.
- f292e64 Get rid of "found bad pointer in Go heap" errors.
- d0ca426 Handle constant.Index in getelementptr.
- 1d11cee Handle float32 infinities.
- ab97755 Handle negative constants in pointer arithmetic.
- 16829cd Handle signed int constants better.
- 37da0fc Implement __memset_chk
- 72ff374 Implement __strcat_chk
- b0b6cb3 Implement alloca with make rather than malloc.
- 0b8320e Implement ashr
- 364224e Implement extractelement
- 30265dc Implement inttoptr
- 6110954 Implement printf in libc package.
- d60f775 Implement puts() and fadd
- c11a073 Inital support for vectors.
- fd66828 Initial commit.
- 3416cd3 Janitor: clear fmt.Errorf/%w and tabled sentinel backlog.
- 3ebeb3f Janitor: typed timeout errors and cleaner csmith tool resolution.
- 6cf5fae Make alloca type-safe.
- df04443 Make byteSlice work on 32-bit systems.
- e072bb6 Make libc.Realloc copy old bytes (tree-sitter new_node).
- cc6d79d Map fputs/fputc, iswspace, and llvm.memmove intrinsic.
- 52ba694 Map free→libc.Free and __assert_fail→libc.AssertFail.
- 8bcf918 Map nonstandard int widths to Go ints; reject widths over 64.
- de25348 Map strlen to libc.Strlen (haskell scanners).
- beed247 Map system stdarg/stdio: va_start/end, vsnprintf, snprintf, fdopen, fclose.
- 2d1ff1d Map wctype/exit; rename locals that shadow funcs or types.
- 46ca199 Merge branch 'master' of https://github.com/andybalholm/leaven
- 059e92b Merge pull request #13 from lewtec/20260809-assimilate-trees
- 1a77df4 Merge pull request #2 from mewpull/issue-1
- dbf31a1 Merge pull request #4 from mewpull/llir-v0.3.0
- d2e4394 Merge pull request #5 from mewpull/update-to-llir-llvm-0.3.1
- b6160e5 Misc. new features.
- 7b638c8 More disclaimer
- bc9e499 More issues with signed int constants.
- a028d74 Move most of the logic from main to a separate function.
- bf5bb7b Remove dots from names of anonymous constants.
- 43c1439 Replace dots in variable names with underscores.
- 092b9ad Represent tagged pointer unions as uintptr (tree-sitter Subtree).
- 19337df Rewrite library functions when used as values (free fnptr).
- 4e7a199 Sanitize clang type names like anon.1 to valid Go identifiers.
- 2981d19 Sanitize hyphens in LLVM names for Go identifiers.
- d025381 Skip csmith cases that hang natively instead of failing.
- 7763959 Start my libc package with mset_pattern16
- 082f6b9 Store IR sanity fixtures one folder each with expect.json tables.
- da546a5 Support atomicrmw (strip clang align; map add/sub/xchg to sync/atomic).
- 0d94a9b Support constant icmp/zext/sext/trunc expressions.
- b152e98 Support extractvalue/insertvalue; allow all pointer bitcasts.
- 2848143 Support float types.
- b9e8bb4 Support inttoptr/ptrtoint for tagged-pointer patterns.
- 402eb45 Support named blocks.
- a0c77f3 Support various new features.
- 84bc4e1 Support vectors in add and trunc
- 37d8408 Suppress unused-variable errors.
- 46fe83c Translate LLVM unreachable to panic("unreachable").
- 48a362d Translate and and or instructions on booleans.
- a9bb0ba Translate array constants.
- bd916f5 Translate bitcast expression.
- e1f95fb Translate boolean constants.
- 6fe34e7 Translate fcmp instruction.
- 75841f2 Translate fcmp with fancy NaN behavior.
- bdae70c Translate fdiv and fsub instructions.
- 063b430 Translate float constants.
- 6461c90 Translate fmul instruction.
- 5830430 Translate fpext instruction.
- bf040ea Translate fptosi instruction.
- 2a0d3b3 Translate fptrunc instruction.
- af3fbed Translate getelementptr constant expressions.
- 66104a0 Translate null pointer constant.
- c877b50 Translate printf as noarch.Printf (from elliotchance/c2go).
- 6e8dfbb Translate putchar and ldexp functions
- dfcab4a Translate sdiv instruction.
- c4b71bf Translate sitofp instruction.
- c37e31f Translate some math functions.
- c17ff81 Translate uitofp instruction.
- cba9511 Transpile strcmp from mustl libc.
- f2f0cb6 Unblock tree-sitter core go build end-to-end.
- 3787e1d Update llir package.
- b84a6ad Update llvm package to get use-tracking API.
- a6dc63b Update to latest version of llir/llvm.
- 78f3b35 Update to v0.3.0 of llir/llvm (released yesterday).
- c95b5bc Update to v0.3.1 of llir/llvm (released 2020-05-04).
- 0da3dca Update to work with master branch of github.com/llir/llvm
- 71812ca Use a map for simple function renaming.
- 76f148b Use capital letters for struct fields.
- afc700f Use correct signature for main function.
- 87a6311 Use generics to streamline pointer arithmetic.
- db44c15 Use mise prebuilt csmith-bin; discover versioned include dirs.
- 4b23eb4 Use more functions from the noarch package.
- 7e2cd81 Use noarch.Memset
- 93e7ef7 chore: call workspaced directly from mise tasks
- 9000861 chore: pin conda:llvm-tools for llvm-link
- 85b982a chore: place csmith and rhai under testdata/projects
- 4e29054 chore: run workspaced through mise exec
- 8bb7544 ci!: drop 32-bit (386) support
- ce616f3 ci: add goreleaser binary releases and logo
- 6bbb765 ci: install clang 22 and skip assimilate in live
- c8847ca ci: matrix tests across all targets
- 86397ad ci: one Autorelease job like the other CLIs
- fc1ad85 ci: release from CI after the test matrix
- fb30b6b ci: run IR fixtures, drop deleted test:live
- b450e6d ci: run live tests with -v
- ddad4fe feat!: move module path to github.com/lewtec/leaven
- 75a78f8 feat: add cmd/leaven with stdin pipe Run
- 953c116 feat: map iswblank to libc.Iswblank
- 06886e8 feat: parse LLVM 22 IR with a real v22 frontend
- e7b4da3 feat: print Rust fixtures with println! and add Vec
- 5f9a5ec feat: run C++ class and Rust struct fixtures on LLVM 22
- 0e3c4c5 feat: run C++ std::string and Rust String through LLVM 22
- 312054a fix launch workflow twice
- 3aee18b fix(ci): host conda sysroot and skip missing tools (#21)
- edeaaaf fix(libc): Arc4randomBuf takes *byte
- 074e58f fix(libc): basic_ios::clear; short std::bad_cast panic
- 666e230 fix(libc): compile on darwin, windows, 386
- 07380f8 fix(libc): drop alloc pins on Free
- ddb28e1 fix(libc): ifstream vptr and iostate for inlined fail
- 262f03f fix(libc): implement arc4random_buf
- 5b3b319 fix(libc): pin RustAlloc on the sync.Map table
- 1e75d97 fix(libc): pin RustAlloc without allocRec.n
- f1c4c3b fix(libc): quarantine freelist to fix csmith seed 99999
- af4acda fix(libc): real ifstream open via a side table
- a335499 fix(libc): use sync.Map for alloc table
- 2cb2636 fix: GEP LLVM size; drop ZST fields; local names not libc
- b7a11db fix: LLVM ptr values are unsafe.Pointer
- 7b4cdbb fix: RB erase rebalance, ostream u16/u32, pow for complex csmith
- 7ce7f58 fix: RbTreeInit at +8 empty-base; ostringstream for gensym
- dcf3312 fix: SSO self-ref globals in init(); sext i1
- 545e99c fix: bind C main argc/argv from os.Args
- b0ca302 fix: call result type is the instruction type
- 94d1d08 fix: call-site fnptr sig; i128→f64; ptr icmp; poll/TLS
- 58ef074 fix: coerce opaque ptr array inits
- 8901661 fix: emit C++ D1/C1 aliases as real function pointers
- dc89d03 fix: emit atomicrmw xchg on i8 via libc CAS loop
- 44fb0d3 fix: emit cmpxchg and load on i8 via libc CAS loop
- 4062811 fix: emit packed ptr+int slots as uintptr (csmith 0x1 GC)
- effcd22 fix: emit same-size scalar bitcast (float↔i32)
- fe38807 fix: emit same-size vector bitcast (<16 x i8> to <2 x i64>)
- 1fca585 fix: emit same-size vector→scalar bitcast (<2 x i64> to i128)
- e30acdd fix: emit stubs for declare-only IR symbols
- db4c7bd fix: emit unsigned i64 constants as uint64(N)
- 67d35a1 fix: fill declare-only VTTs with a stand-in vptr
- 1f026b9 fix: getelementptr on a vector of pointers
- a7d9734 fix: i1 zero is false; LLVM %_ is not Go _
- eb55f39 fix: implement Itanium __dynamic_cast; map cxxabi type_info vtables
- 9952109 fix: implement libc C++ getline on the ifstream side table
- 176d778 fix: implement libc C++ ios_base default ctor
- 8fbf1a9 fix: implement libc C++ locale default ctor
- 2433e1e fix: install ctype on cout so inlined endl does not bad_cast
- b3f76c4 fix: inttoptr constants use unsigned bit pattern
- f52f34c fix: keep &src for AddPointer in GEP
- 3d721a8 fix: lex LLVM 0x hex floats
- 8ac4ab7 fix: lower _Rb_tree_increment/decrement from tree.cc
- d473726 fix: lower atomicrmw xchg of pointers to SwapPointer
- 72a0277 fix: lower cmpxchg of pointers to atomic.CompareAndSwapPointer
- 60ff5ce fix: lower fence; implement __cxa_atexit
- f6d774c fix: lower frem to math.Mod
- fc24dc3 fix: lower i128 to libc.I128; map __ostream_insert
- 202dbc4 fix: lower i256 to libc.I256; parse i256 constants
- 62fe967 fix: lower llvm min/max/trap/ceil/reduce/rel
- 83b2a70 fix: map __isoc23_sscanf; implement Sscanf
- 86dab18 fix: map any ifstream ctor; show panic head
- 2378930 fix: map srand48/lrand48; implement POSIX 48-bit LCG
- f1feac9 fix: pack on bitcast to iN
- a4239ed fix: packed Bit_iterator 12-byte layout; stringstream str/<<
- 972ee68 fix: parse LLVM fence instruction
- 341e7ee fix: parse LLVM splat vector constants
- f150079 fix: parse LLVM thread_local globals
- 421c364 fix: parse and lower cmpxchg to atomic CAS
- 09b9c0f fix: parse call asm; unknown templates panic
- f5f4534 fix: parse call fast-math flags; lower llvm.maximumnum.f64
- 60346c3 fix: parse dead_on_return param attribute
- 809d1ec fix: parse extern_weak; implement Statx
- 8afa8c8 fix: parse extractvalue metadata after indices
- d0ecaa4 fix: parse function metadata before the body
- 804177b fix: parse i128 constants; implement rustc I128 limbs
- 6e4fcba fix: parse load/store atomic orderings
- e2853b9 fix: parse metadata on unreachable
- b356f13 fix: parse unlabeled LLVM entry blocks
- b19b7b4 fix: predeclare cmpxchg temps; drop unreachable block labels
- a97a6f6 fix: read committed IR fixtures in pipe tests
- 97091dc fix: rhai POSIX open/read/mmap/sigaltstack; llvm sat/bitops
- 40ebce2 fix: rhai realpath/bcmp/dlsym/syscall; align-8 alloca; fmt
- 784c749 fix: rhai startup syscalls poll/signal/sysconf/pthread/sigaction
- b1fb63b fix: run llvm.global_ctors; insert into Rb trees
- ac979cc fix: sanitize ;[] in LLVM type names for Go idents
- bb1e3af fix: scalar-stride gep and numeric block names
- bd34b46 fix: shim stringstream and istream >> for str2int
- d833b7c fix: skip LLVM #dbg_* records
- cf51899 fix: stand-in cout vptr so OutputHeader can load vptr-24
- 8abaaac fix: store T at &struct global is overlay
- 3fbb46d fix: table Command IO sentinels and use t.Context
- 58ace3e fix: treat invoke exception pads as non-edges for labels
- 141db21 fix: uniquify colliding SSA names in one function
- 3a440e3 fix: vector binops/shifts/rem; ucmp; scalar+vec GEP
- 8c45a21 fix: vtable fn-ptr globals in init()
- 648adc6 fix: wrap taggedPointerElemName not-pointer error
- 81f5666 leaven: update llir/llvm to v0.3.3
- e035bfa libc: add Getchar
- 61fb0f0 libc: add Puts
- 34bb076 libc: add Scanf
- 2fe065b more tests
- e19d3f9 perf(libc): allocate with modernc.org/memory
- c1d5756 perf(libc): reuse freed Malloc blocks by type
- 2d70842 refactor(emit): Qual[T] into pointer kit AST
- 014b74f refactor(emit): Sym Malloc/Calloc, drop Title
- 31da8b4 refactor(emit): drop unused Load/Store/libcT
- 64d9fed refactor(emit): resolve Sym to goRef at init
- dc5b00c refactor(emit): type-safe Sym instead of libc()
- f8e42be refactor(libc): Calloc via xmalloc+clear
- b414e44 refactor(libc): FuncCode/FuncFromCode for cxa and rust vtables
- d31a368 refactor(libc): fold rotate, ctype, i1vec dups
- 0149234 refactor(libc): generic wide div/rem via math/big
- 1e94ad3 refactor(libc): pdclib pointer math via AddPointer
- 6d305a6 refactor(libc): rustalloc, ios, poll, llvm via pointer kit
- c94a405 refactor(libc): share C format parse and wide div
- ea55b1a refactor(libc): slab-only heap for malloc and RustAlloc
- 2791411 refactor(libc): unixy pointer kit for overlay walks
- 1a8b557 refactor(libc): walk rbtree and cxxabi through pointer kit
- 46cb765 refactor: emit Go via jennifer
- 381a90a refactor: generic delete, int types, atomic words
- 59a77c9 refactor: vendor llir under internal/llir
- 59cab1f test(libc): add allocator baseline benches
- 4838072 use most tools through conda
Released by GoReleaser.
