Skip to content

0.0.1

Choose a tag to compare

@github-actions github-actions released this 26 Aug 01:10
· 10 commits to master since this release

Leaven

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.