Then I see a Node style import and npm. When did Node/NPM stop being dependencies and become standardized by JavaScript? Where's my raw es6 module?
JSON River – Parse JSON incrementally as it streams in
51–60 of 101 posts
Re: JSON River – Parse JSON incrementally as it streams in
#52Concretely, it means I can call an LLM, wrap its output stream in a streaming string, and treat it like a regular string. No need for print loops, it’s all handled behind the scenes. I can chain transformations (joining strings, splitting them with regexes, capturing substrings, etc.) and serialize the results into JSON progressively, building lazy sequences or maps on the fly.
The benefit is that I can start processing and emitting structured data immediately, without waiting for the LLM’s full response. Filtered output can be shown to users as it arrives, with near-zero added latency (aside from regex lookaheads).
Re: JSON River – Parse JSON incrementally as it streams in
#53"has no dependencies, and uses only standard features of JavaScript so it works in any JS environment." Then I see a Node style import and npm. When did Node/NPM stop being dependencies and become standardized by JavaScript? Where's my raw es6 module?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
And node seems to be used only as a dev dependency, to test, benchmark and build/package the project. If you'd be inclined you can use the project's code as-is elsewhere, i.e. in the browser.
Re: JSON River – Parse JSON incrementally as it streams in
#54"has no dependencies, and uses only standard features of JavaScript so it works in any JS environment." Then I see a Node style import and npm. When did Node/NPM stop being dependencies and become standardized by JavaScript? Where's my raw es6 module?
The library doesn't use any APIs beyond those in the JS standard, so I'm pretty confident it will work everywhere, but happy to publish in more places and run more tests. Any in particular that you'd like to see?
Re: JSON River – Parse JSON incrementally as it streams in
#55https://github.com/Qbix/Platform/blob/main/platform/classes/...
Re: JSON River – Parse JSON incrementally as it streams in
#56"has no dependencies, and uses only standard features of JavaScript so it works in any JS environment." Then I see a Node style import and npm. When did Node/NPM stop being dependencies and become standardized by JavaScript? Where's my raw es6 module?
Bare module specifiers aren't just for Node! Deno and browsers support import maps e.g. The library doesn't use any APIs beyond those in the JS standard, so I'm pretty confident it will work everywhere, but happy to publish in more places and run more tests. Any in particular that you'd like to see?
For some reason everybody in the JS world takes "download and execute random software from the Internet" as the only way to do things.
Re: JSON River – Parse JSON incrementally as it streams in
#57Earlier quoted context omitted.
For LLMs I recommend just doing NDJSON, that is, newline delimited json. It's much simpler to implement
Do any LLMs support constrained generation of newline delimited json? Or have you found that they're generally reliable enough that you don't need to do constrained sampling?
Re: JSON River – Parse JSON incrementally as it streams in
#58Earlier quoted context omitted.
Bare module specifiers aren't just for Node! Deno and browsers support import maps e.g. The library doesn't use any APIs beyond those in the JS standard, so I'm pretty confident it will work everywhere, but happy to publish in more places and run more tests. Any in particular that you'd like to see?
Mostly unrelated, but does anyone know how are you supposed to make path-less module specifiers work for Node if you are not using npm but rather system-installed JS packages (Debian etc. install node-* packages into /usr/share/nodejs/)? With `require` it just works, but with `import` it errors and suggests passing the absolute path (even though it clearly knows what path ...). For some reason everybody in the JS wor…
{
"imports": {
"express": "/usr/share/nodejs/express/index.js",
"another-module": "/usr/share/nodejs/another-module/index.js"
}
}
Then run node like: `node --import-map=./import-map.json app.js`The Debian approach of having global versions of libraries seems like it's solving a different problem than the ones I have. I want each application to track and version its own dependencies, so that upgrading a dependency for one doesn't break another, and so that I can go back to an old project and be reasonably confident it'll still work. That ultimately led me to nix.
Re: JSON River – Parse JSON incrementally as it streams in
#59Allows parsing and streaming without any special libraries and allow for an unlimited amount of data (with objects being reasonably sized).
Usually gives these files the .jsonlines suffix when stored on disk.
Allows for batch process without requiring huge amounts of memory.
Re: JSON River – Parse JSON incrementally as it streams in
#60Hi HN! Didn't expect this to be on the front page today! I should really release all the optimizations that've been landing lately, the version on github is about twice as fast as what's released on npm. I wrote it when I was doing prototyping on doing streaming rendering of UIs defined by JSON generated by LLMs. Using constrained generation you can essentially hand the model a JSON serializable type, and it will alw…
I can imagine it being useful to have a made where you never emit strings until they are final, also. I don't entirely understand why strings are emitted incrementally but numbers aren't.