Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
aapoalas
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
9 ms
·
61.
▲
by
aapoalas
1y ago
Oh, and of course Boa is much more complete and ready for action than Nova. If you need an embeddable JS engine in Rust today, go use Boa. If you want to try something new, then Nova may be of interest but it will probably also be an annoyi
62.
▲
by
aapoalas
1y ago
Hey, thank you for the question! We owe a lot to Boa: I would like to call Jason Williams a personal acquaintance, we've discussed JS engines in general, and Boa and Nova in particular both face to face and online. Some parts of builti
63.
▲
by
aapoalas
1y ago
Thank you for pointing this out, I'll have to look into this at some point. There is currently no other way to disable features, and at least for the foreseeable future I don't plan on adding runtime flags for these things. I'
64.
▲
by
aapoalas
1y ago
So for executing static Rust functions we do have "full" support via the `Value::BuiltinFunction` type. We have an internal "BuiltinFunctionBuilder" type for creating these conveniently (mostly) at compile time, and we h
65.
▲
by
aapoalas
1y ago
Thank you! <3 In a way I'm honestly surprised we've gotten that high, but on the other hand maybe it's not too crazy either: Kiesel engine (written in Zig) is at 75% and is pretty much the same age as Nova, and I believe h
66.
▲
by
aapoalas
1y ago
Not really, no. The main reason is that the origins of the Nova JavaScript engine as a project (without the ECS / data-oriented design focus, that came later) are in the Deno runtime's Discord where a friend joked "so when ar
67.
▲
by
aapoalas
1y ago
Thanks for the heads up, I hadn't realised that Static Hermes has the "sane subset" idea underpinning it! I had just thought it's an (somewhat) AoT JS compiler, like a mix between Porffor and V8. I'll have to look i
68.
▲
by
aapoalas
1y ago
This is definitely the more meaningful/influential performance benefit of ECS in game development, I believe. JavaScript will not allow for that as you point out. Perhaps a sufficiently crazy JIT might claw some of those benefits back,
69.
▲
by
aapoalas
1y ago
Nova's GC doesn't use access patterns for this, but this is basically what we do, or in some cases aim to do. Arrays, Objects, ArrayBuffers, Numbers, Strings, BigInts, ... all have their data allocated onto different heap vectors.
70.
▲
by
aapoalas
1y ago
Hey, thank you for the viewpoint. I'm myself a career JS/S programmer as well, and I do appreciate that the lived reality is quite varied. The partial resolving and haphazardness of JSON data usage shouldn't matter too much.
71.
▲
by
aapoalas
1y ago
Not really, no. Its an interesting proposition, but for the most part I believe I'll be sticking it out the "hard way". The ECMAScript spec is fairly easy to read as well, after all. (Nevermind that I spent the single free ho
72.
▲
by
aapoalas
1y ago
Hmm, sorry, I'm not sure what you mean. The engine is written with a fair bit of feature flags to disable more complicated or annoying JS features if the embedder so wants: it is my aim that this would go quite deep and enable building
73.
▲
by
aapoalas
1y ago
Indeed, there's no guarantee that it will fit: I think it will but I don't know and want to find out. There are strong (IMO) reasons to think it will fit, though. User code can indeed do whatever but it rarely does. Programs writt
74.
▲
by
aapoalas
1y ago
Traits are a type of interface inheritance; base classes and inherited classes à la C++ is structural inheritance. So basically it just means that I have to write more interfaces and implementations for them, because I don't have base
75.
▲
by
aapoalas
1y ago
Haha, I think that was a one time fluke! :D I'm aiming for something like 75-85% this year; basically get iterators properly done (they're in the engine but not very complete yet), implement ECMAScript modules, and then mostly foc
76.
▲
by
aapoalas
1y ago
That is one explicit goal, maybe next year realistically: Servo has asked for help making their JS engine bindings layer modular, and I have a self-serving interest in helping achieve that :)
77.
▲
by
aapoalas
1y ago
Thank you! I've been a bit bad with announcing it; blog post was a month late and all that. But indeed, it's really cool to be able to do this for half a year!
78.
▲
by
aapoalas
1y ago
Yup! My whole inspiration for this came from a friend explaining ECS to me and me thinking "wouldn't that work for a JS engine?"
79.
▲
by
aapoalas
1y ago
Of course, and thank you for taking the time to ask! For the foreseeable future the aim will be rather on the QuickJS/DuckTape level than beating V8. But! That is only because they need to be beat before V8 can be beaten :) I'm no
80.
▲
by
aapoalas
1y ago
Hi, Nova dev here. Yes, basically. And removing structural inheritance.
81.
▲
by
aapoalas
1y ago
Hi, main developer of Nova here if you want to ask any questions! I'm at a choir event for the rest of the week though, so my answers may tarry a bit.
82.
▲
by
aapoalas
1y ago
It's more a problem of support and backwards compatibility. JSON and parsers for it are so ubiquitous, and the spec completely lacks any versioning support, that adding a feature would be a breaking change of horrible magnitude, on nea
83.
▲
by
aapoalas
1y ago
Alright, thank you for the answer. Cheers! <3
84.
▲
by
aapoalas
1y ago
Hey, thank you for spreading the joy of the borrow checker beyond Rust; awesome stuff, sounds very interesting, challenging, and useful! One question that came to mind as a single-track-Rust-mind kind of person: in D generally or in your ex
85.
▲
by
aapoalas
2y ago
Thank you, it's really nice seeing cooler heads prevail on the question of "why didn't they build in my favourite thing X?" In entirely unrelated news, I think Chrome should totally switch engines from V8 to a Rust built
86.
▲
by
aapoalas
2y ago
Here's my WIP addition to Oxide Computer's usdt crate: https://github.com/oxidecomputer/usdt/pull/340 This crate gives you a nifty macro that translates Rust probe definitions into the correct ELF s
87.
▲
by
aapoalas
2y ago
Can you link the script? This sounds vaguely like something that would be no skin off my back, so I'd be quite happy to help with this.
88.
▲
by
aapoalas
2y ago
Hello. I assume tracepoints mean kprobes/uprobes or something along those lines? I've just this weekend worked on implementing/adapting a crate for DTrace USDTs aka DTrace probes to also work on Linux and generate SystemTap S
89.
▲
by
aapoalas
2y ago
I don't know what "security safety" is so I must've gotten confused. If you mean type safety, then we do make sure to stay on top of that: Our JS Value is an enum that contains either stack data or a typed index that cor
90.
▲
by
aapoalas
2y ago
Wait, is there an RFC for Rust to support SOA?
More ›