bartblast

bartblast

Creator of Hologram

Hologram v0.8.0 is out! This release brings JavaScript interoperability - the most requested feature since the project’s inception. You can now call JS functions, use npm packages, interact with Web APIs, instantiate classes, and work with Web Components - all from Elixir code, with zero latency on the client side.

Special thanks to @robak86 for extensive help with the JS interop API design. Thanks to @ankhers for contributing Web Components support and to @mward-sudo for a language server compatibility fix and :unicode module refactoring.

Thanks to our sponsors for making sustained development possible: Curiosum (Main Sponsor), Erlang Ecosystem Foundation (Milestones Sponsor), and our GitHub sponsors - Innovation Partner: @sheharyarn, Framework Visionaries: @absowoot, Oban, @Lucassifoni, @robertu, and all other GitHub sponsors.

Full details in the blog post: Hologram v0.8.0: Elixir Gets JavaScript Interop

Showing Posts 1 to 5

mward-sudo

mward-sudo

Massive release!

I’ve not played with the new JS interop, but the API looks very well considered. Hologram is moving into very interesting territory.

I look forward to continuing to contribute and to using the project for something real sometime soon.

bartblast

bartblast OP

Creator of Hologram

Thank you @mward-sudo! It was a massive amount of work indeed - I think @robak86 aged about 5 years during the API design sessions alone. The fact that he still answers my phone calls is either a testament to his patience or evidence that he hasn’t figured out how to block a number yet… Or maybe he just picks up out of morbid curiosity about what I’ll ask next.

10
Post #3
jam

jam

Amazing! Looks very comprehensive.

jam

jam

I’m sure y’all considered this as part of the design but I can’t help but think how clean it’d be to drop the brackets and create the list as an implementation detail under the hood.

So this

result =
  :Decimal
  |> JS.new([100])
  |> JS.call(:plus, [23])
  |> JS.call(:toNumber, [])  

becomes

result =
  :Decimal
  |> JS.new(100)
  |> JS.call(:plus, 23)
  |> JS.call(:toNumber)  
bartblast

bartblast OP

Creator of Hologram

Unfortunately there are two problems with dropping the brackets:

  1. List ambiguity - JS.call(:obj, :processList, [1, 2, 3]) becomes impossible to distinguish between one argument (the array [1, 2, 3]) and three separate arguments.

  2. Arity clash - JS.call/2 calls a standalone function, JS.call/3 calls a method on a receiver. If args were optional, JS.call(:Decimal, :toNumber) could be either call/2 with one arg or call/3 with no args.

The explicit args list is also consistent with Kernel.apply/3, which always requires the args list. I actually considered naming it JS.apply at one point, so the parallel is intentional.

— All posts loaded —

Where Next? Top

Trending in News & Updates Top

woylie
Doggo 0.18.3 has been released. Added tabs: Add a disabled attribute to the :panel slot. A disabled tab can be focused with the arrow k...
New
bartblast
Hologram v0.12 is out! This one is for the big apps. Evo Store, Hologram’s Performance Sponsor, has an app with over 9,000 Elixir modules...
New
mikehostetler
ReqLLM v1.28.0 has been released. Features: add StepFun chat and audio providers (#1087) by mikehostetler openai: honour image deta...
New
GenericJam
Mob 0.9.18 has been released. Added anchor: "bottom" on :scroll, for chat logs (MOB-481). The scroll opens at the end of its content. ...
New
fhunleth
Nerves v2.0.0-pre.4 and v2.0.0-pre.3 has been released. Changes Fix typo preventing SOURCE_DATE_EPOCH from propogating through the fi...
New
GenericJam
Mob 0.9.17, 0.9.16 and 0.9.15 has been released. Added Async work in screens, the LiveView way. Mob.Socket.start_async/3 runs a functi...
New
mudasobwa
Finitomata v1.0.0-rc.0 and v0.43.0 has been released. Published to Hex.pm: finitomata | Hex Documentation: Finitomata v1.0.0-rc.0 — Doc...
New

Other Trending Topics Top

mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews