Stream: show and tell

Topic: Final Parse -- A Roc/Rust TUI


view this post on Zulip ofekd (Sep 23 2026 at 21:00):

Hi all,

Posted this on Reddit and thought I'd share here as well.

I built screenwriting software in Gleam + OpenTUI a little while ago, and while I really enjoy Gleam, having a JS runtime is just no cutting it.

Very excited to see Roc getting up there in maturity, very impressive work by you all. It got me curious to see if Bliss could be ported, and I started with migrating the screenplay conversion engine, published standalone as a TUI/in-browser experience:

https://fp.blisswriter.app/

The part that's embedded in Gleam is a Rust entrypoint that unzips if needed, parses XML if needed, then calls Roc for the conversion logic. Gleam calls via wasm.

The TUI was a bit more trouble. I built a platform based on Ratatui, but because I rely on those Rust zip/XML libraries I and didn't want to mix the zip/xml logic into the TUI platform I ended up embedding the conversion logic as a Wasm in Rust using Wasmtime.

I read the FAQ about platform composition and I understand the rationale. However platform authors no have to implement every conceivable I/O for a platform to be complete, which is quite the duplicate effort.

App authors, while wanting to use the core of some platform, like TUI logic, may opt for vastly different I/Os. For example maybe one TUI is dev oriented and reads cwd for files, while an app like the one I built is packaged for end user and needs file dialogs.

I may be missing something but as I understood, all of the different permutations need to be implemented by the platform author.

Thanks to whoever updated Exercism, really helped go over the language when docs are lacking.

Also thanks to @Niclas Ahden for Joy, from which I learned a lot about platform design in Roc.

I hope to open source the platforms (I also have an Iced one) but I need to clean up the code and most importantly divorce it from app side. It also depends on some compiler PRs I had Claude write, because unlike applications, I know nothing about compiler, so I'll have to read that before opening issues/PRs.

Thank you for your work on Roc. Next I will probably switch out my CRDT, which is wasm from Rust anyway (Loro).

view this post on Zulip TeaDrinkingProgrammer (Sep 24 2026 at 06:02):

You might be interested in @Karl s Trantor: https://roc.zulipchat.com/#narrow/channel/304902-show-and-tell/topic/Trantor.3A.20a.20system.20for.20building.20platforms.20from.20components/with/624972323

view this post on Zulip TeaDrinkingProgrammer (Sep 24 2026 at 06:04):

And the stuff you're building sounds very cool!

view this post on Zulip Anton (Sep 24 2026 at 11:37):

very impressive work by you all

Thanks @ofekd!

By the way, I just checked on reddit and the original Screenwriting post was unfortunately removed by a moderator so you may want to edit the post on r/roc_lang

view this post on Zulip Luke Boswell (Sep 24 2026 at 11:40):

haha, when I saw that I though @Anton had gone rogue and started removing posts ... until I looked closer :sweat_smile:


Last updated: Sep 24 2026 at 15:59 UTC