Commit graph

  • 9337490f5b Implement global variables trunk lisyarus 2026-05-08 21:38:44 +03:00
  • 393db4b912 Dump AST and IR immediately after handling a file lisyarus 2026-05-07 22:33:16 +03:00
  • ec751ec6c2 Fix treating ir::jump_if_nonzero as non-value instruction lisyarus 2026-05-07 22:32:46 +03:00
  • ac58713fe1 Fix mandelbrot example lisyarus 2026-05-07 13:47:27 +03:00
  • d146ec69fd Allow mutable function arguments lisyarus 2026-05-07 13:47:15 +03:00
  • 79838a1bb3 Add raytracer example performance timings lisyarus 2026-04-05 19:14:37 +03:00
  • bd9425ebec Add fresnel in raytracer example lisyarus 2026-04-04 16:53:10 +03:00
  • 028895ce7f Update spec lisyarus 2026-04-03 13:18:45 +03:00
  • 4a83c3b9df Update spec lisyarus 2026-04-03 00:15:02 +03:00
  • 800de413cf Add sizeof & alignof builtins lisyarus 2026-04-03 00:04:12 +03:00
  • 2a3e2171b0 Implement field access for pointer-to-struct lisyarus 2026-04-02 22:48:54 +03:00
  • 42defff7d6 Update spec lisyarus 2026-04-02 21:19:36 +03:00
  • 4545713bab Use ternary if in a few more places in raytracer lisyarus 2026-04-02 21:04:01 +03:00
  • 8ba5345daf Implement ternary ifs lisyarus 2026-04-02 20:19:55 +03:00
  • b3fc435dd6 Fix initializing variable (lmao) lisyarus 2026-04-02 20:19:39 +03:00
  • 471b3319a2 Fix comparing pointer types lisyarus 2026-04-02 19:42:09 +03:00
  • 06d509bcab Add break & continue statements lisyarus 2026-04-02 17:10:00 +03:00
  • 356eea4fb8 Tweak readme lisyarus 2026-04-01 23:45:54 +03:00
  • 20c84596df Add multi-threading in raytracer example lisyarus 2026-04-01 23:43:58 +03:00
  • e0c1db4978 Fix calling functions by pointer in Aarch64 compiler lisyarus 2026-04-01 23:43:47 +03:00
  • c83a5be119 Add raytracer example (wip) lisyarus 2026-04-01 17:04:54 +03:00
  • 07a50e5f7a Update spec lisyarus 2026-04-01 17:04:06 +03:00
  • d17f48cf7f Fix some escape character literals & add a few more lisyarus 2026-04-01 16:52:19 +03:00
  • 7b6f88ea5a Add bounds checks for aarch64 instruction builder immediate arguments lisyarus 2026-03-31 19:27:57 +03:00
  • 5450fe8077 Fix comparing pointers lisyarus 2026-03-31 19:27:36 +03:00
  • e2781fef8f Add ast::type_alignment lisyarus 2026-03-31 19:27:14 +03:00
  • d5eab856c8 Change double-precision suffix from l to d lisyarus 2026-03-31 16:00:34 +03:00
  • e573081647 Add logical-compound-assigment operators (^=, &=, |=) lisyarus 2026-03-31 16:00:23 +03:00
  • 3ea319f7bf Fix evaluating array address in IR compiler lisyarus 2026-03-31 15:59:23 +03:00
  • 6863cdf567 Fix calling function returning large structs from functions returning large structs in Aarch64 compiler lisyarus 2026-03-31 13:29:37 +03:00
  • 8fd548fb92 Fix casting array to pointer in IR compiler lisyarus 2026-03-31 13:07:44 +03:00
  • fefe741b16 Fix address of operator in IR compiler lisyarus 2026-03-31 13:07:28 +03:00
  • 0784e27a01 Fix jumping in Aarch64 compiler lisyarus 2026-03-30 20:29:58 +03:00
  • 580ae22a98 Fix printing struct fields lisyarus 2026-03-30 20:29:39 +03:00
  • b8658816b4 Fix short-circuiting operators (SQUASH) lisyarus 2026-03-30 20:29:25 +03:00
  • ac6eacd80b Add a hacky implememntation of global constants lisyarus 2026-03-30 20:02:41 +03:00
  • 86216e8cf3 Fix short-circuiting operators lisyarus 2026-03-30 20:02:13 +03:00
  • 75f1cea3f3 Support casting pointers <-> u64 lisyarus 2026-03-30 20:01:56 +03:00
  • 52a2a00d1f Fix returning large structs from functions in Aarch64 lisyarus 2026-03-30 16:53:02 +03:00
  • 6d69f846f4 Add compound assignment operators lisyarus 2026-03-30 13:33:16 +03:00
  • 171e07c58d Fix type expression parsing precedence: (t -> t mut *) caused shift/reduce conflict lisyarus 2026-03-30 13:32:36 +03:00
  • 38fd23b50e Add left/right shift operators lisyarus 2026-03-30 12:04:34 +03:00
  • 138bddf187 Remove old aarch64 compiler and update plans lisyarus 2026-03-29 23:22:29 +03:00
  • e771542773 Implement array-types function arguments & return values in Aarch64 compiler lisyarus 2026-03-29 22:52:48 +03:00
  • 1404437324 IR & Aarch64 compiler arrays support wip lisyarus 2026-03-29 19:37:49 +03:00
  • 46c33b2acf Implement proper struct field assigment in IR compiler lisyarus 2026-03-29 12:20:49 +03:00
  • 79101ff3bd Fix computing struct layouts lisyarus 2026-03-29 12:20:17 +03:00
  • 041513f33e Support struct return values in aarch64 compiler lisyarus 2026-03-27 20:25:16 +03:00
  • 7622a882b5 Support struct function arguments + fixes lisyarus 2026-03-27 20:02:50 +03:00
  • 62fc4c88de Fix floating-point function arguments in Aarch64 compiler v2 lisyarus 2026-03-27 16:17:37 +03:00
  • 0dc740d656 IR & Aarch64 compiler structs support wip: struct constructors, assignment, field access lisyarus 2026-03-27 14:53:36 +03:00
  • 14cb393076 Support comparison operators for integers of different types lisyarus 2026-03-26 23:49:28 +03:00
  • 81825aee7f Tweak reporting function call type error lisyarus 2026-03-26 15:53:06 +03:00
  • d31758eb4a Support frame pointers lisyarus 2026-03-25 19:23:12 +03:00
  • 64514d9bf4 Fix storing <8 byte sized objects on stack lisyarus 2026-03-25 19:22:52 +03:00
  • 5d7968c30b Implement IR + Aarch64 pointers lisyarus 2026-03-25 16:30:43 +03:00
  • 42e7f7961e New IR -> Aarch64 compiler wip: basic operations done (no pointers, structs, arrays) lisyarus 2026-03-25 00:22:50 +03:00
  • c3c5010e04 Store node list via shared_ptr in module_context lisyarus 2026-03-23 21:53:42 +03:00
  • dd3eb5d14b Implement pointer support in IR via load/store instructions lisyarus 2026-03-23 15:35:28 +03:00
  • 0c11b09548 Pointers wip lisyarus 2026-03-23 14:41:47 +03:00
  • 776c12f6b5 Update plans lisyarus 2026-03-23 00:26:58 +03:00
  • b267f09ea4 Fix abi.cpp indentation lisyarus 2026-03-23 00:17:26 +03:00
  • e084b48fd3 Refactor IR compiler: get rid of useless scoping lisyarus 2026-03-23 00:11:33 +03:00
  • ebc19fad20 Refactor type checker: remove useless scoping, resolve type layouts all in one go lisyarus 2026-03-22 23:49:29 +03:00
  • c4d1252462 Refactor return AST node: store direct function node reference instead of relative scope level lisyarus 2026-03-22 20:18:39 +03:00
  • 5d00f1ddb7 Refactor AST: store direct references to AST nodes in indentifiers lisyarus 2026-03-22 20:02:40 +03:00
  • 292d6eeabf Refactor: split pre-AST (contains if/else if/else blocks, field definitions, no hierarchy) and the actual AST obtained after resolving scoping & indentation (contains if chains, no field definitions) lisyarus 2026-03-22 14:06:34 +03:00
  • 56c63d50ac Struct types refactor v2: store AST node pointer in struct type lisyarus 2026-03-22 13:34:35 +03:00
  • 78e6a5c0ee Add readme and tweak spec lisyarus 2026-03-22 13:00:41 +03:00
  • d363be0eef Replace some usages of ostringstream with std::format lisyarus 2026-03-21 22:09:33 +03:00
  • 357baa9652 Fix printing function types like (a -> b) -> c lisyarus 2026-03-21 22:02:30 +03:00
  • 7d5795d9bf Fix compilation to IR, in particular initializing a variable with a copy of another variable lisyarus 2026-03-19 15:05:08 +03:00
  • 29c936c19c Rework grammar to support input files without a newline in the end lisyarus 2026-03-18 19:03:31 +03:00
  • ae01f53d15 Improve interpreter input handling lisyarus 2026-03-18 18:48:01 +03:00
  • 25672d3f05 First common arch-independent IR prototype (no structs or arrays yet) lisyarus 2026-03-18 18:35:47 +03:00
  • 1a0dd2a48f Aarch64 JIT compiler wip: partial struct support lisyarus 2026-03-17 18:08:23 +03:00
  • 53be7b92df Store inferred struct field type in the field node itself lisyarus 2026-03-16 12:44:27 +03:00
  • ab028c9d7a Hard-code size of bool as 1 just in case lisyarus 2026-03-15 20:12:18 +03:00
  • 8c0b371fdb Implement computing struct layout (size, alignment, field offsets) in type checking lisyarus 2026-03-15 20:12:01 +03:00
  • 0d6b491fd4 Fix resolving top scope variables in resolve_identifiers (were considered global, but not anymore) lisyarus 2026-03-15 16:34:14 +03:00
  • bcdcc9e752 Fix identifier & literal source locations in parser lisyarus 2026-03-15 16:33:29 +03:00
  • b25400ad65 Properly implement inner functions in aarch64 compiler & support module entry point lisyarus 2026-03-15 14:15:36 +03:00
  • 4b555c2ad4 Fix filename tracking in locations & separate prelude location and full block location for AST nodes containing statement lists lisyarus 2026-03-14 00:48:46 +03:00
  • 3981b78b2d Rename parser::finilize -> finalize lisyarus 2026-03-13 17:18:55 +03:00
  • 84f193befd Add mandelbrot example lisyarus 2026-03-13 14:26:28 +03:00
  • 89b6b09be5 Fix scope stack offset cleanup in aarch64 compiler lisyarus 2026-03-13 14:25:05 +03:00
  • 51c78169b3 Validate functions with no return & automatically add return in the end of a function returning unit lisyarus 2026-03-13 13:40:09 +03:00
  • 11656fb296 Support printing multiline error context in interpreter lisyarus 2026-03-13 13:39:28 +03:00
  • 902d272deb Fix empty location in if chains lisyarus 2026-03-13 13:39:01 +03:00
  • ad46b230d8 Fix missing handling of expression statements in aarch64 compiler lisyarus 2026-03-13 12:53:18 +03:00
  • e5ce32d25f Fix handling empty returns in aarch64 compiler lisyarus 2026-03-13 12:53:03 +03:00
  • 788e98409a Implement remainder operator in aarch64 compiler lisyarus 2026-03-13 11:24:43 +03:00
  • 0541068c2b Improve 'not implemented' error messages lisyarus 2026-03-13 11:09:39 +03:00
  • 7f574eabbd Fix extending register after logical not in aarch64 compiler lisyarus 2026-03-13 11:05:20 +03:00
  • c8cd86dd0b Add foreign functions (stub in interpreter, implemented in aarch64 compiler) lisyarus 2026-03-13 11:01:53 +03:00
  • cb433d87bf Fix short-circuit || for small integer types lisyarus 2026-03-12 23:13:42 +03:00
  • 13a9ba24f2 Refactor: split function definition & declaration in ast lisyarus 2026-03-12 21:45:21 +03:00
  • 927368aa80 Add short-circuiting versions of and/or (&& and ||) and implement them for bools and integers in interpreter and aarch64 compiler lisyarus 2026-03-12 21:37:15 +03:00
  • 76f80f8135 Update spec lisyarus 2026-03-12 20:17:17 +03:00
  • c7e0232b15 Aarch64 JIT: check function pointer support lisyarus 2026-01-19 15:14:13 +03:00