Commit graph

68 commits

Author SHA1 Message Date
e49885c83a stack traces in the brush editor
after 35 thousand years it's finally here
good erro message
2025-06-25 20:51:45 +02:00
8b464d50f4 haku: more cleanups: remove old unused VM
also remove some leftover TODOs
2025-06-16 18:57:51 +02:00
c80cd1c7fe haku1 API cleanups (removing 2 suffix) 2025-06-16 18:34:28 +02:00
00a48527ca haku2: add stats + fix crash w uninit vm 2025-06-16 16:40:01 +02:00
e667c6336a haku2: on the client
resource indicators are currently unimplemented
2025-06-15 21:30:37 +02:00
45c954cb03 haku2: fix implementation of / (div)
it was multiplying instead of dividing
2025-06-13 20:56:20 +02:00
667eef136e remove redundant imports and leftover log timestamp disabling thing 2025-06-13 20:41:58 +02:00
845c9f0f5b add support for aarch64-unknown-linux-gnu 2025-06-13 20:38:00 +02:00
354d49d927 haku2: make build.rs spit out unknown targets 2025-06-13 20:33:18 +02:00
48d03699bd haku2: make server use haku2 (and make it work!) 2025-06-13 20:11:54 +02:00
c5e2892def #broken haku2: progress on making it work 2025-06-11 16:42:43 +02:00
7658e0d4e8 haku2: VM logging 2025-06-11 10:43:40 +02:00
5de4f9d7c6 hotwire haku2 into rkgk
really a bodge job right now and it crashes but it's a start
2025-06-04 00:28:43 +02:00
550227da34 haku2: rest of functionality (hopefully) & Rust->Zig FFI 2025-06-03 21:53:49 +02:00
01d4514a65 beginning of haku2: a reimplementation of haku in Zig
the goal is to rewrite haku completely, starting with the VM---because it was the most obvious point of improvement
the reason is because Rust is kinda too verbose for low level stuff like this. compare the line numbers between haku1 and haku2's VM and how verbose those lines are, and it's kind of an insane difference
it also feels like Zig's compilation model can work better for small wasm binary sizes

and of course, I also just wanted an excuse to try out Zig :3
2025-06-01 23:19:05 +02:00
65645f410f additional list functions (range, map, filter, reduce, flatten) (#74)
also make the VM cope with reentrancy
2025-05-27 22:25:29 +02:00
e2f9538156 haku: add len and index functions for reading lists 2024-10-25 23:22:06 +02:00
913d65b0a8 implement brush cost gauges
they're a little ugly at the moment, and can be a little useless for most simple brushes, but whatever we'll make them better later
2024-10-25 21:39:53 +02:00
43e6951f7d fix crash occurring when a path cannot be created
this can occur if tiny_skia decides it doesn't like the path (e.g. circle with negative radius)
i don't really care to render these since they're degenerate cases anyways
2024-10-23 21:53:44 +02:00
b059ef4c35 fix broken with_dotter_identity test
probably broke after evaluation style changes
2024-10-23 21:52:36 +02:00
581a1778ca change no_mangle to unsafe(no_mangle) 2024-10-23 21:52:05 +02:00
e0e64f7e24 implement auto-saving under reticles 2024-10-23 21:09:00 +02:00
4ba7e25510 fix server not resetting VM on brush eval request 2024-10-23 20:46:06 +02:00
e19e47e6ad fix clippy lints 2024-10-23 20:45:34 +02:00
7c40505d7d disallow running another reticle after a dotter 2024-10-23 19:46:23 +02:00
37c575748b add support for vectors as operands to math operations 2024-10-22 21:58:32 +02:00
5b7d9586ea introduce tags, structs, and reticles
this was meant to be split into smaller changes, but I realised I edited my existing revision too late.
2024-10-22 21:39:04 +02:00
4430d6d125 add documentation for new math functions 2024-09-07 15:39:54 +02:00
4bf3d685b8 add libm math functions to haku 2024-09-07 14:33:20 +02:00
e12573566e add Debug impl for InvalidId 2024-09-07 14:32:38 +02:00
958cab5452 improve error reporting for missing else clauses 2024-09-07 14:31:48 +02:00
d309211558 allow up to 65536 parser events
parser events don't take up enough memory to warrant a stricter limit.
I do wonder if this limit is actually reachable with a 65536 character limit though.
2024-09-04 22:16:01 +02:00
5e6b84bed5 cache busting
for faster load times, and seamless updates.
because for some reason ServeDir can't do it correctly, and it tells the client "yeah hey nothing changed" even if something changed
2024-09-04 21:50:30 +02:00
bf4d538651 add ping/pong between client and server
the purpose of this is to hopefully prevent nginx from reaping the connection, since there's data flowing through it every so often
2024-09-02 23:17:35 +02:00
c1ccc1be24 fix an unnecessarily large amount of locals being emitted for each function
previously we'd create (argument_count + let_count) locals, which doesn't make sense.
so now `let`s use their own counter for their own locals, and we only request as many empty locals as there are `let`s.
2024-09-02 21:43:27 +02:00
39989e555a fix SetLocal not taking into account the stack bottom
y'know, when you look for locals relative to the call frame's bottom, but then set locals relative to index 0...
boom.

closes #78
2024-09-02 21:39:04 +02:00
f4ceb0057e add a bunch of logging to haku, including vm-trace for tracing what the VM does 2024-09-02 21:36:38 +02:00
337de0b57b return an error when the parser is at its event capacity 2024-09-02 20:41:13 +02:00
26d3b8ed8a add a lot more logging to both client and server to analyze #81
> #81 Compiling brush doesn't seem to finish correctly sometimes, which causes loss of data
> Sometimes it seems like the client state can get desynced (server render thread dies due to a panic?) and then the server starts dropping all requests for drawing the brush.
> These panics should never happen of course, but we need better logging first to determine the exact cause.
2024-09-02 20:15:28 +02:00
a30c36c92a fix compilation errors on release mode due to missing #[cfg(debug_assertions)] with parser event tracing 2024-09-01 19:20:24 +02:00
ef1e35fcf0 remove redundant arity checking code from system functions, update error messages
the arity of unary and binary ops is guaranteed by the fact they're, well, unary and binary ops.
right now there's no way to call them with less or more arguments, so we may as well.
2024-09-01 19:15:58 +02:00
d1a6fb364e fix more syntax v2 bugs, update docs 2024-09-01 18:55:16 +02:00
084012d65f parser debugging utilities + fixed paren sometimes producing unbalanced events
parser events now have a `from` field which has the source location of where the event was emitted.
this location is pretty-printed when using `Debug`
2024-09-01 10:03:21 +02:00
c5b2eb376f simplify Compiler lifetimes
the 2nd 'b lifetime parameter was not needed
2024-09-01 09:32:21 +02:00
2595bf0d82 syntax v2
introduce a new, more ergonomic syntax for haku
not all features are implemented just yet. still missing:

- custom tags (non-True/False)
- color literals
- lists
2024-09-01 09:29:11 +02:00
879d17d904 docs; rendering docs from .dj to .html
still no in-app link to these docs though
2024-08-26 23:26:03 +02:00
0d831698e2 add proper error and disconnect handling
error handling shows you the error and offers the ability to reload;
disconnect handling shows you that the page will reload in a few seconds.
it uses exponential backoff with some random sprinkled into it to prevent overwhelming the server once people's clients decide to reconnect.
2024-08-25 12:55:07 +02:00
7f78d0ce1b remove some leftover code 2024-08-24 22:03:23 +02:00
ba89b6eb04 fix haku-wasm/haku.js errors not resetting properly sometimes 2024-08-24 18:40:33 +02:00
2d1f49f78d move apply_defs to just before the VM evaluates code 2024-08-24 18:04:49 +02:00