Commit Graph

  • c9694af826 vm and compiler: removed automatic currying, and several other modifications to the language main haxala1r 2026-05-10 17:23:42 +03:00
  • 947d2274bb vm: modified StoreLocal and StoreGlobal logic to be more consistent with the rest of the VM, and modified the emit module to emit a Pop instruction after every top-level expression. haxala1r 2026-04-26 01:20:05 +03:00
  • d846046c4a Big changes: haxala1r 2026-04-26 00:55:43 +03:00
  • 0925b44ef7 vm: got the VM to finally actually work haxala1r 2026-04-25 22:48:06 +03:00
  • 5edcc974b6 binary: modify binary to make use of the new compilation pipeline haxala1r 2026-04-25 22:47:34 +03:00
  • 4716c71b15 compiler: modify the Emit module to actually produce a vm_state object directly executable by the VM haxala1r 2026-04-25 21:04:49 +03:00
  • 2b02740e68 compiler: add the initial draft for compiling into byte code with backpatching haxala1r 2026-04-25 20:46:28 +03:00
  • 190ec94e14 compiler: make space for compiling into the VM bytecode haxala1r 2026-04-25 20:44:37 +03:00
  • fe3ad80826 vm: added noop instruction, various other improvements haxala1r 2026-04-25 20:43:55 +03:00
  • 2822774931 vm: modified the vm to include native procedures, and changed the order of some parameters haxala1r 2026-04-25 00:08:54 +03:00
  • 06d0b4d2bf vm: wrote an initial sketch of a rough bytecode VM haxala1r 2026-04-24 19:10:14 +03:00
  • 757df161d1 scope analysis: created another type to statically eliminate one (im)possible error case haxala1r 2026-04-05 23:14:29 +03:00
  • 39ed14b33d nix: change pkgs.mkShellNoCC -> pkgs.mkShell because a standard environment is required in a development shell as well haxala1r 2026-04-05 23:04:03 +03:00
  • 3ae6a7491d nix: add a separate shell.nix so I can specify merlin there without adding it as a build requirement haxala1r 2026-04-05 22:58:45 +03:00
  • 4c573289b5 build: separated the nix flake and derivation, to allow for simpler builds and more flexibility haxala1r 2026-04-03 20:33:26 +03:00
  • 24213597f1 flake: update haxala1r 2026-04-03 20:06:31 +03:00
  • 4792a296d3 interpreter: minor fixes, changes to the main binary to actually interpret some source code haxala1r 2026-03-22 17:23:49 +03:00
  • 040353683f interpreter: added a new implementation for an interpreter. typechecks, but it needs testing haxala1r 2026-03-01 16:25:42 +03:00
  • cb7e3f8622 scope_analysis: changed convert to return the global symbol table as well as the program haxala1r 2026-03-01 16:24:45 +03:00
  • fe26b6c2b3 scope_analysis & core_ast: added functions to convert directly from source for convenience haxala1r 2026-02-28 18:59:37 +03:00
  • a95a676cb2 scope_analysis: small logic fix haxala1r 2026-02-28 18:41:02 +03:00
  • 24db34db62 scope_analysis: added support for deferred computation haxala1r 2026-02-15 15:09:59 +03:00
  • 7685ae2e45 interpreter: removed the outdated tree-walk interpreter haxala1r 2026-02-15 14:30:41 +03:00
  • 8d301a6fc2 scope_analysis: fix the handling of Lambda forms haxala1r 2026-02-12 18:32:36 +03:00
  • 81dfc07867 compiler: added my first attempt at a scope analysis pass haxala1r 2026-02-11 23:40:53 +03:00
  • bd6acf89e0 util: separated the monadic traverse into a utility module haxala1r 2026-02-11 23:40:17 +03:00
  • 36ef8f2a22 Added a license haxala1r 2026-02-10 21:36:49 +03:00
  • 3a7f3971ba ci: update publish.yaml haxala1r 2026-02-05 23:21:01 +03:00
  • b5b0a44400 ci: update publish workflow to use ocaml 5.4 haxala1r 2026-02-05 23:17:45 +03:00
  • b2e3f5703b ci: update dune-project to add menhir dependency haxala1r 2026-02-05 23:12:56 +03:00
  • 2d038279f2 ci: add directive in dune to generate opam file haxala1r 2026-02-05 23:09:37 +03:00
  • fae7bd8077 ci: Add a woodpecker workflow to publish a nightly amd64 version haxala1r 2026-02-05 23:05:34 +03:00
  • 5e91f6e8fa correct the design document for closure conversion haxala1r 2026-02-05 00:12:58 +03:00
  • 7cdd4ee759 updated the design document haxala1r 2026-02-04 22:54:53 +03:00
  • a250d96c63 core_ast: remove letrec comment haxala1r 2026-02-04 21:52:16 +03:00
  • 3a3bf2c674 core_ast: removed letrec. we now treat it as let + set. haxala1r 2026-02-02 22:36:55 +03:00
  • 7402a688c7 compiler: remove unused files haxala1r 2026-02-02 20:43:13 +03:00
  • ed4f49311c syntactic_ast: unwrapped the central GADT into several related types. core_ast: related to the above, reorganized core_ast to use the new syntactic ast haxala1r 2026-02-02 20:32:15 +03:00
  • bd907fe69a minor changes haxala1r 2026-02-02 19:53:08 +03:00
  • d7729571ea core_ast: modify the core ast to use unary functions haxala1r 2026-01-16 22:34:35 +03:00
  • 6e8e345388 ci: change the debian and fedora workflows to not ask for user input haxala1r 2026-01-16 13:15:09 +03:00
  • 78c2e4c335 ci: move nixos build, rename debian build haxala1r 2026-01-14 21:49:33 +03:00
  • aeb8e89526 ci: rename the debian workflow, add fedora workflow haxala1r 2026-01-14 21:46:42 +03:00
  • 12b347de38 general: removed containers dependency haxala1r 2026-01-14 21:40:21 +03:00
  • 67bd37eaa2 ci: add menhir to the debian build workflow haxala1r 2026-01-14 21:22:25 +03:00
  • 5b6ed1beb5 ci: fix findlib package name haxala1r 2026-01-14 12:46:56 +03:00
  • d0f9483aaa ci: fix build.yaml haxala1r 2026-01-14 12:45:18 +03:00
  • e60b447198 ci: added workflow for building on debian, moved nix build to another file haxala1r 2026-01-14 12:43:54 +03:00
  • 11625c88c6 core_ast: add of_sexpr haxala1r 2026-01-14 12:28:22 +03:00
  • d41d8e5fbe core_ast: add initial draft for the core ast, and a conversion function from the syntactic ast haxala1r 2026-01-07 20:02:10 +03:00
  • ec56d76fb3 syntactic_ast: modify the phantom types to have concrete constructors, as the ocaml compiler cannot prove them distinct otherwise haxala1r 2026-01-07 20:00:11 +03:00
  • be81061895 syntactic_ast: fix issue in set! parsing, add set! to the test case. haxala1r 2026-01-07 18:18:38 +03:00
  • e25b6b0b10 syntactic_ast: fix issue in cond parsing haxala1r 2026-01-07 18:17:24 +03:00
  • 0d731f29b3 syntactic_ast: added a node for set! expressions haxala1r 2026-01-07 18:13:55 +03:00
  • 54c48ddf0e syntactic_ast: add node for if expressions haxala1r 2026-01-07 18:03:28 +03:00
  • edc9d8b9e6 syntactic_ast: added parsing and pretty printing for cond expressions haxala1r 2026-01-04 21:38:04 +03:00
  • e95a115acf syntactic_ast: Added proper handling for Let and Letrec haxala1r 2026-01-03 21:35:27 +03:00
  • 9fb29afc3e syntactic_ast: Modified letrec forms to also accept a body haxala1r 2026-01-03 20:49:17 +03:00
  • 17e533dbb8 Modified the GADT to distinguish bodies haxala1r 2026-01-03 20:43:11 +03:00
  • 6d95977324 ast: improved the implementation of syntactic_ast debug: added debug functions for the syntactic_ast module Modified the compiler executable to test a little bit. haxala1r 2026-01-03 18:30:47 +03:00
  • cb94372f29 new ast: added a new syntactic_ast module that provides a more structured AST as a GADT haxala1r 2026-01-03 16:44:00 +03:00
  • bc7ca0fa2d new library: added containers as a dependency. haxala1r 2026-01-01 13:36:09 +03:00
  • d401548d1d Change the build workflow to run on cron activations as well haxala1r 2025-12-28 21:32:48 +03:00
  • 77213ce492 Change build workflow to only run on push and tag events haxala1r 2025-12-27 18:21:19 +03:00
  • 5afa613138 Change build workflow to also run the binary haxala1r 2025-12-27 18:17:29 +03:00
  • 61a08c1b9b Changed flake to use flake-utils and build for all targets haxala1r 2025-12-27 18:14:25 +03:00
  • 1422f14822 Added first build workflow haxala1r 2025-12-27 17:31:23 +03:00
  • 9981c222eb Added desugar phase for converting cond into a chain of if's haxala1r 2025-12-27 17:00:16 +03:00
  • 93ba06a6b0 Expand parser to include =, > and < as symbol characters haxala1r 2025-12-27 16:59:44 +03:00
  • 624d420afe Separated mutually recursive definition of desugar phases haxala1r 2025-12-27 16:44:18 +03:00
  • d80caadc85 Added gensym, and phases in the desugar module for logical and & or haxala1r 2025-12-27 16:41:22 +03:00
  • be0d479665 Added desugar steps to add (begin) wrappers around long lambda bodies, and rewrite internal (define) forms into letrec forms haxala1r 2025-12-26 22:13:30 +03:00
  • 4f1ad54596 Started work on the compiler, with a desugar phase haxala1r 2025-12-26 20:42:03 +03:00
  • e10124498e Reorganize flake again, it should be good now haxala1r 2025-12-09 19:44:30 +03:00
  • fc44d7f195 Reorganize flake, remove unnecessary prebuild phase haxala1r 2025-12-09 19:43:26 +03:00
  • 582a0a3b86 Add merlin to the devshell, because I use emacs haxala1r 2025-12-08 22:37:48 +03:00
  • 58277ad0a3 Complete reorganization: finally at a building state again haxala1r 2025-12-08 22:25:58 +03:00
  • adbf083c3d Reorganized project haxala1r 2025-12-08 22:25:36 +03:00
  • 8e980a8f1b Reorganized basically everything, making way for the compiler haxala1r 2025-11-15 13:06:16 +03:00
  • 81c349c70a Added pretty-printing. haxala1r 2025-11-12 23:32:54 +03:00
  • 6c2ae01a80 Improved the debug print function to pretty-print lists. haxala1r 2025-11-11 23:23:16 +03:00
  • e46938005b Making preparations for more of the standard library haxala1r 2025-11-11 22:34:22 +03:00
  • e2f1a55cb7 Revert "Minor changes" haxala1r 2025-11-06 23:29:38 +03:00
  • 5b9de4d5a3 Minor changes haxala1r 2025-11-06 23:29:28 +03:00
  • 64e52cd0cf Added more math operations, generalized and simplified existing math operations, added some list operations for the lisp lists haxala1r 2025-11-06 23:02:16 +03:00
  • 2f9501450f Reorganized the standard library a little more, moved the initialization code for the standard environment into a function. Making way for more organization changes to come haxala1r 2025-11-05 23:55:21 +03:00
  • a45918d203 Added type annotations for the environment module to make things clearer, switched bind_args implementation with a simpler one. haxala1r 2025-11-03 23:00:46 +03:00
  • 93723be488 Update gitignore haxala1r 2025-11-03 22:34:00 +03:00
  • 52eee92b7b remove mistaken autosave file haxala1r 2025-11-03 22:33:15 +03:00
  • 892f47ba5f Reorganized environment-related functions. haxala1r 2025-11-03 22:32:43 +03:00
  • c7132325db Added some standard functions haxala1r 2025-10-30 23:42:10 +03:00
  • c80d5fd75f reorganized a bit, separated bind-symbol into two operators that have different uses, def and set haxala1r 2025-10-30 21:01:40 +03:00
  • 3e53f3720f Removed irrelevant comment Emin Arslan 2025-10-16 22:31:12 +03:00
  • d0accebf73 Changed the addition and subtraction functions to be clearer Emin Arslan 2025-10-16 22:28:11 +03:00
  • 9b20547e84 Added def, changed naming, and added if expressions Emin Arslan 2025-10-16 17:15:04 +03:00
  • dec68856f3 Evaluation is now performed properly, mimicking Common Lisp, and basic defun and defmacro definitions are provided (automatically executed on startup) Emin Arslan 2025-10-14 22:26:00 +03:00
  • 365595a345 Added dot syntax for lists, and proper quote syntax. LQuoted is now unused Emin Arslan 2025-10-14 22:24:57 +03:00
  • df0b3178f0 Improved the repl to return to evaluation upon error. Also added an exit command Emin Arslan 2025-10-14 21:06:11 +03:00
  • bb0ec74ee7 Added builtin special forms, lambda forms and bind-symbol. got rid of bind-function, as it is now unnecessary. it is now possible to create functions! Emin Arslan 2025-10-14 21:05:10 +03:00
  • aaafe1c3e6 Re-organized a lot of code, changed functions so that functions capture the surrounding environment and execute in that environment Emin Arslan 2025-10-14 20:21:29 +03:00