<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chromatopelma/csc/ir1.csc, branch main</title>
<subtitle>Partial r7rs implementation with a focus on ease of implementation and a reusable library. Work in progress.</subtitle>
<id>https://code.roseh.moe/chromatopelma/atom/csc/ir1.csc?h=main</id>
<link rel='self' href='https://code.roseh.moe/chromatopelma/atom/csc/ir1.csc?h=main'/>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/'/>
<updated>2022-08-02T02:35:19Z</updated>
<entry>
<title>Modify the project structure.</title>
<updated>2022-08-02T02:35:19Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-08-02T02:35:19Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=acc561366f3fe6ec0377103f52ef0f7e923711c9'/>
<id>urn:sha1:acc561366f3fe6ec0377103f52ef0f7e923711c9</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Perform argument conversion.</title>
<updated>2022-07-21T03:08:14Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@google.com</email>
</author>
<published>2022-07-20T22:39:23Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=e615308b928585013461482f879f536527c5acc2'/>
<id>urn:sha1:e615308b928585013461482f879f536527c5acc2</id>
<content type='text'>
The point of argument conversion is to validate on each function call
that the right number of arguments were passed, and to ensure that no
function has more than 1 argument. This second condition makes CPS
slightly simpler, and ensures that the arguments will all fit in locals.

We take the strategy of allocating a vector for each function call.
Ideally we would optimize away most of these allocations, but for now I
just want it to work.
</content>
</entry>
<entry>
<title>Add builtin operations to IR1.</title>
<updated>2022-07-13T05:55:48Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@google.com</email>
</author>
<published>2022-07-13T05:55:48Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=d18813441649665f42b524443c65d0b6bb4ac59a'/>
<id>urn:sha1:d18813441649665f42b524443c65d0b6bb4ac59a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add a diff library.</title>
<updated>2022-07-03T21:37:10Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-07-03T21:37:10Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=bcb098e8eb18637b6999789585a38ff9168de9d5'/>
<id>urn:sha1:bcb098e8eb18637b6999789585a38ff9168de9d5</id>
<content type='text'>
I was hesitant to add a diff library, but it was surprisingly easy. A
straightforward application of dynamic programming.
</content>
</entry>
<entry>
<title>Write closure conversion.</title>
<updated>2022-07-03T06:04:28Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-07-03T06:04:28Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=37e086d27d478246e72b8f5c1b75ed5d092495fa'/>
<id>urn:sha1:37e086d27d478246e72b8f5c1b75ed5d092495fa</id>
<content type='text'>
I desperately need a diffing library.
</content>
</entry>
<entry>
<title>Add pattern matching for record types.</title>
<updated>2022-06-30T04:52:30Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-06-30T04:52:30Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=804a2fe3c90c06a22a1eed5ea50d667ff3e7b08c'/>
<id>urn:sha1:804a2fe3c90c06a22a1eed5ea50d667ff3e7b08c</id>
<content type='text'>
I like scheme because it's possible to add any convenient language
feature I can think of.
</content>
</entry>
<entry>
<title>Improve CPS.</title>
<updated>2022-06-28T22:58:36Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-06-28T22:58:36Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=fed28363fb60266c030a0f6b30d5a9d697774ee0'/>
<id>urn:sha1:fed28363fb60266c030a0f6b30d5a9d697774ee0</id>
<content type='text'>
Goodbye soup. Thanks to "Compiling with Continuations" by Appel.
</content>
</entry>
<entry>
<title>Finish CPS.</title>
<updated>2022-06-27T03:14:19Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-06-27T03:14:19Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=52da9c556a170ed8e5f811c3acd56088baf94c80'/>
<id>urn:sha1:52da9c556a170ed8e5f811c3acd56088baf94c80</id>
<content type='text'>
Wow we actually finished CPS. Next is closure conversion, then codegen,
and then we should be able to run some end to end tests. Then we can
look at garbage collection, and from there continue building features
down the long road to self hosting.
</content>
</entry>
<entry>
<title>More CPS.</title>
<updated>2022-06-26T02:32:04Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-06-26T02:32:04Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=05463502db73ab9a5ac23e1f598e838fbe14b3f8'/>
<id>urn:sha1:05463502db73ab9a5ac23e1f598e838fbe14b3f8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Continue work on continuation passing style.</title>
<updated>2022-06-25T23:14:47Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-06-25T23:14:47Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=7004f8d7a381fcd2f9c63ae04d99dc67161158f4'/>
<id>urn:sha1:7004f8d7a381fcd2f9c63ae04d99dc67161158f4</id>
<content type='text'>
</content>
</entry>
</feed>
