aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2022-08-07Fix hoist.Rose Hogenson1-2/+4
Hoist needs to hoist the function bodies as well.
2022-08-07Fix an infinite loop in the garbage collector.Rose Hogenson1-15/+13
2022-08-07Add int<? and eq?.Rose Hogenson3-2/+37
2022-08-07Fix a bug in expand-body for an empty body.Rose Hogenson1-1/+2
2022-08-07Define last-index.Rose Hogenson2-0/+26
2022-08-07Fix a typo in codegen.Rose Hogenson1-3/+1
2022-08-07Activate the new libraries.Rose Hogenson1-1/+3
2022-08-07Add numbers.Rose Hogenson1-0/+821
2022-08-07Add vectors.Rose Hogenson1-0/+156
2022-08-07Add map and for-each.Rose Hogenson1-1/+35
2022-08-07Fix a bug in the records library.Rose Hogenson1-1/+2
We have to check if it's a pointer before dereferencing.
2022-08-07Add booleans.Rose Hogenson1-2/+25
2022-08-05Check that records are the correct type.Rose Hogenson1-9/+15
To avoid selecting the wrong field, or reading out of bounds, we should ensure that a record is the correct type before reading a field.
2022-08-05Add more of the standard library.Rose Hogenson10-386/+774
2022-08-05Add call-with-values.Rose Hogenson2-1/+21
2022-08-05Add call-with-current-continuation.Rose Hogenson2-0/+15
2022-08-04Add if, and, or, when and friends.Rose Hogenson3-2/+90
2022-08-04Add begin.Rose Hogenson1-1/+12
2022-08-04Add if and set!.Rose Hogenson3-5/+67
2022-08-03Start the scheme base library.Rose Hogenson3-0/+94
2022-08-01Remove mutable globals.Rose Hogenson3-9/+14
Per a closer reading of R7RS, it's an error to mutate an imported binding with set!. My apologies to Guile when I said they had a bug.
2022-08-01Modify the project structure.Rose Hogenson46-7/+13
Now the lib directory contains what will eventually end up on the user's /usr/lib/csc. When I write make install, it will copy all of the .csc files from lib into the destination lib directory. This means I can start working on the standard library in lib/scheme.
2022-08-01Rename the compiler in bytecode.rs.Rose Hogenson1-2/+2
2022-08-01Rename the compiler.Rose Hogenson2-9/+19
I'm starting the process of updating the whole project to use the new name Chromatopelma.
2022-07-30Add typeof to encoding.rs.Rose Hogenson1-0/+9
2022-07-30Add call-builtin syntax.Rose Hogenson4-2/+36
This syntax allows calling opcodes directly from scheme code. Very powerful technique.
2022-07-30Add the typeof opcode.Rose Hogenson3-0/+95
2022-07-30Fix a bug in the linker label calculation.Rose Hogenson2-5/+5
2022-07-30Move Cargo.nix to default.nix.Rose Hogenson1-0/+0
2022-07-30Fix some test cases in the compiler.Rose Hogenson3-29/+30
2022-07-30Write more tests for decode.Rose Hogenson1-15/+261
2022-07-29Fix the bytecode interpreter.Rose Hogenson9-796/+1173
I'm too scared to actually try to run it right now.
2022-07-29Insert an exit op at the end of the program.Rose Hogenson4-15/+9
2022-07-29Handle the (csc builtins) library separately.Rose Hogenson1-7/+15
2022-07-29Fix test failures.Rose Hogenson3-97/+115
2022-07-29Fig bugs in the flag library.Rose Hogenson2-11/+31
Now bool flags are handled properly. We have a compiler!!
2022-07-29Fix some compilation errors in the compiler.Rose Hogenson7-15/+72
2022-07-28Write the CLI frontend.Rose Hogenson3-5/+170
2022-07-28Improve the strings API.Rose Hogenson6-223/+264
I'm just copying the go strings library API.
2022-07-28Add the compiler frontend.Rose Hogenson2-0/+142
I haven't written any tests yet, so this code probably doesn't even compile.
2022-07-28Use a better interface for macros.Rose Hogenson2-109/+140
2022-07-28Use a better interface for linker.Rose Hogenson2-37/+53
2022-07-28Better interface for join.Rose Hogenson2-5/+5
2022-07-28Use a better hashing scheme for identifiers.Rose Hogenson1-3/+1
2022-07-26Slightly improve the hash function.Rose Hogenson1-6/+7
2022-07-26Fix a potential R7RS issue.Rose Hogenson16-1568/+1608
I was using the load procedure to load a program, but by a strict reading of R7RS, load can only handle expressions and definitions, not imports. So instead I'm defining each test as a library, and using the environment procedure to load them at runtime.
2022-07-26Fix an issue with how the linker combined files.Rose Hogenson4-32/+55
I inserted jump statements into the bytecode at the beginning of each compilation unit, to jump to the init label. The point is that now the bytecode can be executed from start to finish, and assuming the libraries were ordered correctly, it will run the full program.
2022-07-25Document the plan for symbols.Rose Hogenson1-5/+5
2022-07-25Re-write the encoding library.Rose Hogenson2-93/+209
I greatly improved the library, and changed it to expect register bytecode instead of stack-based.
2022-07-25Re-write the linker.Rose Hogenson2-57/+111