• R/O
  • HTTP
  • SSH


No Tags

Frequently used words (click to add to your profile)

javaandroidc++linuxc#windowsobjective-ccocoaqt誰得pythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

A categorical programming language

Rev. 时间 作者
63aeaec 2023-01-06 09:07:19 Corbin

Encode pairs on the WASM stack.

I realize that implementing (pair f g) properly will require some extra
stack-saving work. Really, we should still have "stack ops", but now the
property is whether or not the stack is saved; our "spilless ops" would
compose without using any locals.

I know that we could spill after every op, and let an optimizer clean it
up, but what if the optimizer can't figure it out? I have been told many
times that my codegen output is bulky, and I think I can get this case
correct on my own.

0c85363 2023-01-05 14:36:09 Corbin

Figure out a viable encoding for ports.

Something about this is cognitively challenging. But I think I've
figured it out well enough to start porting the rest of the compiler.

After this, only curries will be left to figure out, and I've got a
couple different defunctionalization approaches to try.

b8a799e 2023-01-04 15:36:05 Corbin

Try a new approach to compiling to WASM.

This is based on a graph-and-ports architecture, as used in Elliott's
"Compiling to Categories" and almost certainly elsewhere.

2caa030 2023-01-03 17:41:10 Corbin

Stopping point for now with graph reduction.

My head hurts and it doesn't feel like anything's actually getting
computed. We're just building thunks.

a493d59 2023-01-03 09:20:01 Corbin

Really get hacking with graph reduction in RPython.

d6f135a 2023-01-02 15:12:49 Corbin

Try compiling to an application graph.

This is basically a graph-reduction compile target. I'm going to see how
fast this is in RPython, and then in ECMAScript, and finally in
WebAssembly. It doesn't have to outperform RPython, but it does need to
outperform the current PureScript interpreter.

ae7767f 2022-12-29 08:26:01 Corbin

Allow sym° to run in reverse.

This lets us apply it multiple times onto a single symbol.

dced8f9 2022-12-28 12:10:43 Corbin

Rewrite djinn core.

Now we pull apart types first, synthesizing expressions from the pieces.
The results are quite good; with only a few tactics, we are able to
synthesize all of the existing testcases, including the three that used
to fail.

d901c37 2022-12-27 13:43:18 Corbin

Friendship ended with OCaml, miniKanren is my new.

I still like OCaml, but it just is too heavy for compiler work. I need
to be able to refer to Cammy terms as lightweight literals, and going
through an extra layer of type-safety is just not protecting me enough
to be worthwhile.

3eebbfd 2022-12-27 12:45:39 Corbin

Run compiled WASM in the browser.

Animations aren't there yet, but it's only a matter of time.

e30409a 2022-12-27 08:22:20 Corbin

Compile (pr zero succ) to WASM relationally.

Sheesh. That was quite a bit of work to get the assembler to be happy,
but that is a good sign, because this sort of extra structure allows me
to be more confident in the output. Also, the optimizer is able to see
through this loop, although it doesn't do a polynomial or polyhedral

I honestly can't blame them for not starting on LICM; I haven't really
thought about that or list fusion for a while, and I'm still putting it

2204cdb 2022-12-25 08:11:41 Corbin

Write to the hive with Honey.

bf529a6 2022-12-17 03:08:25 Corbin

Diagram how the tools interact.

ddce871 2022-12-16 14:55:29 Corbin

Relationally compile f-add to WASM.

I had agonized a bit about using (project), but ultimately it makes
sense here, because we are extracting a large ground term and we expect
to be able to fully type each term before compiling it.

8bb2974 2022-12-14 14:46:01 Corbin

Be more relational when compiling to WASM.

1860a9c 2022-12-13 06:53:02 Corbin

Finish isolating normal-form test.

Sadly, none of the existing timeouts are fixed. But we weren't really
expecting that, so it's okay.

95cdaab 2022-12-13 06:44:43 Corbin

Use quasiquotation in main cammy° relation.

I tried this before, but it didn't work. Now, for some reason, it works.
The unfinished block.

b1a4743 2022-12-09 12:58:37 Corbin


7f077e6 2022-12-06 05:09:21 Corbin

Parameterize canvas size.

The canvas is only built once, so it can't be dynamically changed; but
otherwise, it seems to work.

a462bdf 2022-12-06 04:37:27 Corbin

Refactor how previews are built.

I broke equalities, I know.

af6d60d 2022-12-05 03:33:01 Corbin

Try to display equalities.

Dunno how to represent ASTs well yet.

5508813 2022-12-02 13:16:21 Corbin

Remove most RPython old-style hive management.

We aren't going back.

We should factor out the REPL and CAM compiler too, so that this RPython
code can be refactored to focus on video.

f6be40d 2022-12-02 10:40:51 Corbin

Click directly on a canvas to pause/play.

1fd0740 2022-12-01 12:52:14 Corbin

Minify compiled JS.

This doesn't seem to really change anything in terms of speed; I suspect
that we'll need to use the optimized PS backend instead.

0cb58a1 2022-12-01 12:39:27 Corbin

Factor out Honey CSS.

ec7ec91 2022-12-01 12:31:07 Corbin

Remove browser-side heap cache.

As a pattern, it seems like we'll let the Honey server handle all of the
heap management. Extraction is still possible, just not how we'll prefer
to compile browser-bound code.

8b1976a 2022-12-01 08:37:48 Corbin

Wire up jelly to Honey.

0aa2d73 2022-11-30 06:10:09 Corbin

Tear down old JS interpreter.

Also call `purs compile` from Nix.

767fdeb 2022-11-30 04:39:49 Corbin

Use Nix to set up paths for Honey.

And also use a temporary directory correctly. Animations still work
great, and everything still feels snappy.

de20322 2022-11-28 07:34:34 Corbin

Finish switching over to PureScript.

This is very messy and I'm not really pleased with it. The overall
speedup that I was hoping for? Not there!