User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
Admin
Wyvern-shaped software developer and hobby vector artist. Also sometimes a fluffy werewolf alien creature (Areon) or a bird (Corveon).

Creator of the neofoxes, neocats and other emojis.
wvrnBox
Website
https://volpeon.ink/
Speaking German, English
Age 30s
Pronouns he / him
Backup Account @volpeon@goto.wyvern.rip
Bonus Content @areon@icy.wyvern.rip
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
@ShadowJonathan neofox_googly
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
I revisited the JSON parser and wrote my own parsing library. It's not too different from the one in the stdlib, but it handles some cases more efficiently and that makes a huge difference.
The old parser caused a stack overflow with a 144kb JSON file. The new parser can handle a 1mb JSON test file, but still causes a stack overflow with a 5mb file.
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
IRI parser works brdUwu
Only the IRI resolution algorithm left, and then I can finally get to JSON-LD
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
And can I just say how much I like this little guy neofox_aww
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
I shouldn't watch this right before dinner time brdFlat
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
Looks like it's a known issue with ctl effects (which parsers use): github.com/koka-lang/koka/issues/279
There's one more idea I want to try, but otherwise I'll just accept it for now
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
I removed all backtracking and it can handle larger JSON files now, but I still need to remove a very large chunk of the tests file to avoid the crash. brdThink
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
@catsalad Everybody knows that cats are forever hungry
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
It's actually not too difficult to avoid backtracking if you make the subparsers smarter. I just didn't do it because it also makes them less readable, but oh well.
So right now I parse booleans like this, for instance:
string("true") || string("false"), which means it tries the first parser, and on failure the second one (and therefore the consumed input must get "un-consumed").
The smarter solution is to pick the right branch directly so there is no "un-consuming" necessary. Like this:
val c = one-of("tf")
if c == 't' then
  string("rue")
else
  string("alse")
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
Reminder that I have a backup account in case there are issues with Hetzner: @volpeon
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
Oh, it's back
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
The application crashes when the JSON is too large. I bet it's because Koka's parser combinator library makes every single step backtrackable.
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
Vel's avatar is RTX off, mine is RTX on woozy_baa
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
@catraxx
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
Hefezopf 🍞 brdComfy
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
I was about to add unit tests for the IRI parser and found a nice JSON file with lots of test cases. I have JSON parsing, so that's good. What I don't have is a nice way to decode the generic json type to a specific type presentation, like with Aeson's FromJSON. I could still get all the test cases from the JSON file without it, but the rest of the application needs to handle JSON as well and then a decoder abstraction would be really good to have. So writing a decoder module is next brdFlat

edit: Never mind again. I keep missing stuff because I keep looking for Haskell-like solutions, but Koka is simply different.
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
@ziphi drgn_pat
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
Well, guess what
The community stdlib has one and it's good, so they spared me the effort
brdFlat
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
GitHub Copilot Chat Flaw Leaked Data From Private Repositories
I'm pretty sure I read that headline before, but it's getting hard to tell with all the AI assistants leaking data left and right woozy_baa
User avatar
privTri Volpeon areon3NSmol @volpeon@icy.wyvern.rip
6mo
@hexaitos It's regular Firefox 143