4 ms·
I'd love to see plv8 added to this. Jerry S. has done an amazing job of wrangling the insane v8 build process into something that mostly works across platforms
by claytongulick 4y ago
I'd love to see plv8 added to this.
Jerry S. has done an amazing job of wrangling the insane v8 build process into something that mostly works across platforms, but installation is still not particularly simple.
Unfortunately, due to the problems with that build process, Ubuntu and other flavors dropped the prebuilt apt packages.
Making plv8 a simple install would be a huge boost to the community.
- jerrysievert 4y agowow, thanks for the compliment! it hasn't always been easy, believe me.
- LunaSea 4y agoThank you for the amazing work indeed! I know that at one point the idea of using a non-v8 JavaScript engine was floating around, due in part to the V8 build complexity and the API breaking changes. Is this still something that is up in the air? I know that Bun decided to use JavaScriptCore as a recent example.
- jerrysievert 4y agoI have been slowly but surely working on pljs in my spare time. it is nowhere near feature parity with plv8, but I hope to get it closer with more time. currently missing: * query execution/cursors * window functions * sub transactions it is based on quickjs, is very fast/easy to compile, and while in long-running functions it is slower than v8, it has a very fast startup time that negates that for shorter functions. but, it's not ready for prime time yet.
- mike_hearn 4y agoThat's interesting - could you describe what makes the build and install so hard? I can't think of any obvious reason why it should be harder than PL/Java. V8 is pretty widely used!
- jerrysievert 4y agov8 has its own build chain, which involves ~5gb of downloads. that build chain doesn't work on many platforms, and requires very specific versions of prerequisites including specific glibc versions. the build chain consists of specific compilers, specific versions of chromium parts and pieces, its own sys root, everything. since the API for v8 changes on a regular basis (not as much as it has in the past, at least), you cannot simply change out v8 versions, as they likely will not work. v8 is also compiled differently for each embedding application, and thus a shared object won't work correctly across multiple applications, and besides is strongly advised against by the v8 team. nodejs has its own build process that they've been maintaining since the v8 3.1.4 days, but it is specific to node. so, it just adds up to a difficult maintenance.
- mike_hearn 4y agoWow. That's kind of surprising. HotSpot is just autotools: ./configure && make and you're done. Plus the embedding APIs are stable. Do you have any insight into what led them to have such a complex build? Is it just because it's a part of the Chromium tree? It doesn't seem inherent to the problem space.
- jerrysievert 4y agothey use their own build systems for everything, even skia. though skia has a bit less strict build requirements.
- michelpp 4y agoGood news for you then! plv8 is a trusted language and works with pg_tle just fine. EDIT: I think I misunderstood your comment, plv8 itself is a compiled extension and thus cannot be a TLE, however TLEs can be written in plv8 once you have it installed. Sorry for the confusion!