Stream: beginners

Topic: How to install nightly release


view this post on Zulip Benjamin Nash (Jan 22 2026 at 17:52):

Hi everyone, I'm wondering how to install the nightly releases. I tried using the Just script from rickhull/roc-init but got the following:

 just install-roc
Downloading roc_nightly-macos_arm64-2026-01-22-8e7aabc.tar.gz...
[OK] Cached nightly: nightly-2026-January-22-8e7aabc
Installing nightly-2026-January-22-8e7aabc...
Extracting to /Users/bnash/.local/bin...
tar: Error opening archive: Unrecognized archive format
error: Recipe `install-roc` failed with exit code 1

I'm on Mac (Arm).

view this post on Zulip Rick Hull (Jan 22 2026 at 17:55):

hm, i haven't tested on macos. i am very new to roc and zig, but I can try to help troubleshoot

view this post on Zulip Benjamin Nash (Jan 22 2026 at 17:56):

Ah OK–I had a feeling it might've been targeted for Linux but wasn't sure how just worked

view this post on Zulip Rick Hull (Jan 22 2026 at 17:57):

yes, it's very much a "works for me" right now, but I very much want it to be useful to others. it's failing around here:

#...
    echo "Extracting to {{install_root}}/bin..."
    mkdir -p {{install_root}}/bin
    tar -xzf "$tarball" -C "$tmpdir"

    # Find the extracted directory (should be roc_nightly-linux_x86_64-DATE-HASH)
    extracted_dir=$(find "$tmpdir" -maxdepth 1 -type d -name "roc_nightly-*" | head -1)

    if [ -z "$extracted_dir" ]; then
        echo "Error: Could not find extracted directory"
        exit 1
    fi
#...

view this post on Zulip Rick Hull (Jan 22 2026 at 17:57):

the "unknown archive format" is somewhat surprising. it's either looking at the wrong file, or it has the right file but the internal structure is unexpected

view this post on Zulip Rick Hull (Jan 22 2026 at 17:58):

you may be able to complete the install by following the just tasks as a guideline

view this post on Zulip Rick Hull (Jan 22 2026 at 17:59):

oh! i think the mktemp stuff might be linux-specific. i think I included some stuff to keep macos working but speculative.

view this post on Zulip Rick Hull (Jan 22 2026 at 18:02):

it may have been a download that failed or was silently corrupted. i'm adding more checks to the justfile and will push soon

view this post on Zulip Benjamin Nash (Jan 22 2026 at 18:02):

Oh looks like the arch name is not quite right:

view this post on Zulip Rick Hull (Jan 22 2026 at 18:06):

I pushed a new justfile, you should be able to pull. then:

rm -rf cache/roc-nightly/nightly-2026-January-22-8e7aabc
just install-roc

view this post on Zulip Benjamin Nash (Jan 22 2026 at 18:10):

Works! Thank you

 just install-roc
Downloading roc_nightly-macos_apple_silicon-2026-01-22-8e7aabc.tar.gz...
[OK] Cached nightly: nightly-2026-January-22-8e7aabc
Installing nightly-2026-January-22-8e7aabc...
Extracting to /Users/bnash/.local/bin...
[OK] Roc nightly installed to /Users/bnash/.local/bin/roc

Ensure /Users/bnash/.local/bin is in your PATH:
  export PATH="/Users/bnash/.local/bin:$PATH"

Roc compiler version debug-8e7aabc3

view this post on Zulip Rick Hull (Jan 22 2026 at 18:11):

My expectation is that you should be able to run install-roc every morning and get the latest and everything stays working. Not that I would. But I could.

view this post on Zulip Rick Hull (Jan 22 2026 at 18:12):

and with the caching strategy, you could e.g. set a systemd timer once an hour and it mostly does nothing

view this post on Zulip Benjamin Nash (Jan 22 2026 at 18:15):

That's helpful to know–and I'm hoping to be able to give anything recent (in the last couple of moths) a try, unstable though it may be.

view this post on Zulip Rick Hull (Jan 22 2026 at 18:16):

do you use claude? have you tried the claude skill?

view this post on Zulip Benjamin Nash (Jan 22 2026 at 18:17):

Yes, I do use Claude extensively, though haven't yet tried the skill feature

view this post on Zulip Rick Hull (Jan 22 2026 at 18:18):

I think that, from the roc-user level, the new compiler is incredibly stable. userspace has seen very little breakage in a long time, to my knowledge. the tricky part is documentation and tooling / platforms. basic-cli platform, for example, is not yet available.

view this post on Zulip Rick Hull (Jan 22 2026 at 18:19):

I'm hoping roc-init can help bridge that gap, and I'm actively working on more new compiler platforms.

view this post on Zulip Benjamin Nash (Jan 22 2026 at 18:19):

Ah OK–are web server or others available?

view this post on Zulip Rick Hull (Jan 22 2026 at 18:22):

I'm thinking about this a little bit, I may have a misconception here, so bear with me. I started by building a new compiler platform first, and then wrote "hello world". You need a platform that provides Stdout, Stderr, Stdin (well just Stdout, really, for Hello World). you can get this from https://github.com/lukewilliamboswell/roc-platform-template-zig i'm guessing you have to build this first before you can get hello world?

view this post on Zulip Rick Hull (Jan 22 2026 at 18:23):

Here is the platform I built -- if you are ok with more justfile, you can see how I do the builds. this is the equivalent of build.sh (to my knowledge) from roc-platform-template-zig. https://github.com/rickhull/schnorr-platform

view this post on Zulip Benjamin Nash (Jan 22 2026 at 18:31):

Ahh, I see–I will look into getting a platform going then

view this post on Zulip Rick Hull (Jan 22 2026 at 18:33):

My schnorr platform started as roc-platform-template-zig it should be easy to get started.

view this post on Zulip Benjamin Nash (Jan 22 2026 at 19:28):

I did this to get the language server working:

    # Create roc_language_server wrapper (LSP is built into roc)
    printf '%s\n' '#!/bin/sh' 'exec roc experimental-lsp "$@"' > {{install_root}}/bin/roc_language_server
    chmod +x {{install_root}}/bin/roc_language_server

And this to get the skill working:

    cp skills/roc-language/SKILL.md ~/.claude/skills/roc-language/skill.md

Does that seem right? Want me to open a PR for any of that?

view this post on Zulip Rick Hull (Jan 22 2026 at 19:29):

i haven't touched the LSP stuff, so nice job. there is a just task to install the skill. you probably have a little bit of a symlink problem now

view this post on Zulip Rick Hull (Jan 22 2026 at 19:30):

just skill-init creates the skill in-repo. skill-install puts it at ~/.claude

view this post on Zulip Benjamin Nash (Jan 22 2026 at 19:31):

Hmm, when I ran just skill-install, it didn't show up in claude till I also copied SKILL.md

view this post on Zulip Rick Hull (Jan 22 2026 at 19:31):

hmmm, maybe an oversight, lemme check -- CONFIRMED

view this post on Zulip Rick Hull (Jan 22 2026 at 19:32):

feel free to open a PR to add a just task for the language server; i am vaguely aware of LSP but not too familiar

view this post on Zulip Rick Hull (Jan 22 2026 at 19:37):

you shouldn't need to, but you can pull and just skill-install again

view this post on Zulip Rick Hull (Jan 22 2026 at 19:39):

i don't like how those skill- tasks work currently -- a lot of repetition; and my intent was they would copy from references/ and not docs/ (But references/ is a symlink to docs/) -- but maybe this symlink is more trouble than it's worth

view this post on Zulip Benjamin Nash (Jan 22 2026 at 19:41):

Regarding the LSP, my Zed extension seemed to require roc_language_server in my PATH , so I added a script there that pointed at roc experimental-lsp. That seemed to be better than nothing. Seems that the Zed extension also has newer unpublished changes as well.

view this post on Zulip Rick Hull (Jan 22 2026 at 19:46):

I'm not a Zed user (yet). I use emacs on the CLI via SSH. Is that a useful LSP environment?

view this post on Zulip Benjamin Nash (Jan 22 2026 at 19:47):

I'm new to Zed too–usually I use Cursor

view this post on Zulip Luke Boswell (Jan 22 2026 at 20:33):

Benjamin Nash said:

Regarding the LSP, my Zed extension seemed to require roc_language_server in my PATH , so I added a script there that pointed at roc experimental-lsp. That seemed to be better than nothing. Seems that the Zed extension also has newer unpublished changes as well.

Neat idea adding that script.

I made a branch for the zed extension and installed that locally, but your solution sounds way easier :grinning:

view this post on Zulip Benjamin Nash (Jan 22 2026 at 20:38):

I did also clone h2000/zed-roc and install that as a Zed dev extension, after also installing Rust. Seems like that might be using newer code, but am not sure

view this post on Zulip Luke Boswell (Jan 22 2026 at 20:49):

Yeah I made a PR and that merged, so it is I think.

view this post on Zulip Luke Boswell (Jan 22 2026 at 20:50):

But we definitely need to update the tree sitter impl. I might look at that but @Eli Dowling is much better with tooling things than I

view this post on Zulip Rick Hull (Jan 22 2026 at 20:50):

I'm going to attempt a just task for the language server. as you said, a shell script named roc_language_servercopied to ~/.local/bin that calls roc experimental-lsp

view this post on Zulip Benjamin Nash (Jan 22 2026 at 20:59):

Is anyone using a recent nightly build on Mac? I think I built a platform but get lots of linker errors.

view this post on Zulip Benjamin Nash (Jan 22 2026 at 21:21):

What I specifically get is: ld64.lld: error: library not found for -lSystem

view this post on Zulip Luke Boswell (Jan 22 2026 at 21:30):

Curoius... I wonder why it's not finding lib system. Is there some kind of library path that needs to be set? I think the related file in roc is linker.zig

view this post on Zulip Rick Hull (Jan 22 2026 at 21:48):

for the language server task -- I made a wrapper script and put it in PATH, but I think any editor can just be configured to run roc experimental-lsp and go from there. i'm tempted to kill the just install-lsp task I have, as it mainly serves to match the Zed default

view this post on Zulip Benjamin Nash (Jan 22 2026 at 21:52):

To link, the justfile needs to also copy the darwin dir:

    # Copy darwin sysroot if present (required for macOS linking)
    if [ -d "$extracted_dir/darwin" ]; then
        rm -rf {{install_root}}/bin/darwin
        cp -r "$extracted_dir/darwin" {{install_root}}/bin/
    fi

view this post on Zulip Rick Hull (Jan 22 2026 at 21:59):

Pushed, thanks!

view this post on Zulip Rick Hull (Jan 22 2026 at 22:02):

I have to imagine this is all documented and covered somewhere already -- I'm just not aware. Going to poke around a bit to see if I can lean on existing tools or docs

view this post on Zulip Luke Boswell (Jan 22 2026 at 22:07):

I'm not really following this thread closely... if you find an issue making a GH issue with all the relevant details is easiest for me. Have we resolved the above issue with macos finding lib system?

view this post on Zulip Rick Hull (Jan 22 2026 at 22:08):

@Benjamin Nash how much of this stuff https://www.roc-lang.org/install/macos_apple_silicon did you need to do? I think this is directly targeting the old compiler, and not sure how much is expected to apply to the new compiler.

view this post on Zulip Rick Hull (Jan 22 2026 at 22:09):

@Luke Boswell yeah, this is from using the roc-init justfile, attempting macos install -- adding the darwin sysroot reportedly resolves -- I have updated the install-roc task for macos to do this now.

view this post on Zulip Luke Boswell (Jan 22 2026 at 22:10):

I don't think we need zstd anymore for the new compiler

view this post on Zulip Benjamin Nash (Jan 22 2026 at 22:10):

@Luke Boswell Yes, the installation procedure needed to copy an additional dir from the nightly bundle. So no issue with roc itself needs to be filed

@Rick Hull that procedure seems to install the older (September) release, so my procedure was separate

view this post on Zulip Rick Hull (Jan 22 2026 at 22:12):

mainly I was looking at brew install zstd as a requirement, I guess. if stuff like this is required, it may not necessarily belong in the justfile or I might need to reconsider some scoping.

I can add another check- task that looks for zstd and on failure prompts the user to take action.

view this post on Zulip Luke Boswell (Jan 22 2026 at 22:14):

I mean that I think zstd was required to be installed for the old rust compiler, but I think we managed to remove that as a dependency in the new zig one -- so not something you would need to worry about for the roc init thing your working on

view this post on Zulip Rick Hull (Jan 22 2026 at 22:15):

oh shoot, i missed that little message, cool!

view this post on Zulip Benjamin Nash (Jan 22 2026 at 23:35):

I documented what works for me here: https://gist.github.com/benash/12e5f47428a4d4c02c10444ce49ed592

view this post on Zulip Luke Boswell (Jan 22 2026 at 23:37):

It might be easier using a platform from a release URL instead of building/copying/removing etc. Most users will use a release and not need to worry about platform development at all

view this post on Zulip Luke Boswell (Jan 22 2026 at 23:38):

here is an example app using a release URL https://gist.github.com/lukewilliamboswell/33ae5bd0f66f4915a01fce178e6139b8

view this post on Zulip Luke Boswell (Jan 22 2026 at 23:39):

All you need is roc app.roc and you should be good to go (as an application author)... no need to have a lower level toolchain like zig or cargo installed

view this post on Zulip Rick Hull (Jan 23 2026 at 00:08):

here is where that maybe came from:

Rick Hull: I'm thinking about this a little bit, I may have a misconception here, so bear with me. I started by building a new compiler platform first, and then wrote "hello world". You need a platform that provides Stdout, Stderr, Stdin (well just Stdout, really, for Hello World). you can get this from https://github.com/lukewilliamboswell/roc-platform-template-zig i'm guessing you have to build this first before you can get hello world?

Rick Hull: Here is the platform I built -- if you are ok with more justfile, you can see how I do the builds. this is the equivalent of build.sh (to my knowledge) from roc-platform-template-zig. https://github.com/rickhull/schnorr-platform

Maybe barking up the wrong tree a lil bit.

view this post on Zulip Rick Hull (Jan 23 2026 at 00:09):

@Benjamin Nash listen to @Luke Boswell :thumbs_up:

view this post on Zulip Benjamin Nash (Jan 23 2026 at 03:04):

Luke Boswell said:

It might be easier using a platform from a release URL instead of building/copying/removing etc. Most users will use a release and not need to worry about platform development at all

Ohh interesting

view this post on Zulip Benjamin Nash (Jan 23 2026 at 03:09):

But do the nightly builds have built platform already available someplace?

view this post on Zulip Rick Hull (Jan 23 2026 at 03:10):

at the risk of steering you slightly wrong again, I think you can separate the roc compiler release, from the platform release. e.g. https://github.com/lukewilliamboswell/roc-platform-template-zig/releases

view this post on Zulip Benjamin Nash (Jan 23 2026 at 03:11):

OK, so I could build for Mac and push someplace and use that platform URL for the foreseeable future

view this post on Zulip Benjamin Nash (Jan 23 2026 at 03:12):

Oh or maybe just reference that directly

view this post on Zulip Rick Hull (Jan 23 2026 at 03:13):

as in: https://github.com/rickhull/roc-init/blob/master/main.roc right?

view this post on Zulip Benjamin Nash (Jan 23 2026 at 03:14):

Ah, even easier. Thank you!

view this post on Zulip Rick Hull (Jan 23 2026 at 03:15):

whew! :halo:

view this post on Zulip Rick Hull (Jan 23 2026 at 03:17):

in general, you have the new compiler and shouldn't need to worry about keeping up, IMHO. i don't think much is changing in "userspace". and if you have a platform binary with the necessary functions, then you're off and running doing "new roc" :partying_face:

view this post on Zulip Benjamin Nash (Jan 23 2026 at 03:17):

OK. Great to know.

view this post on Zulip Rick Hull (Jan 23 2026 at 03:19):

as far as that goes, the roc-init repo should not really be any part of your workflow. it's for getting set up. you have roc, you can update it. you have a roc-language skill, maybe some LSP stuff. now it's your project, and you can update things without roc-init. just thinking out loud here

view this post on Zulip Luke Boswell (Jan 23 2026 at 03:20):

We've had breaking changes in the past where the new nightly needs a platform update. When that happens we try to communicate it loudly and coordinate efforts with all the common platforms before we pull the trigger. We're not tracking any breaking changes in the near term though.

view this post on Zulip Benjamin Nash (Jan 23 2026 at 03:21):

Good to know about these things!

view this post on Zulip Rick Hull (Jan 23 2026 at 03:21):

that's a good point; from my perspective, where I developed a new-roc platform, I have all these justfile checks about the roc cache and zig cache, do i need to clean before build, etc.

view this post on Zulip Rick Hull (Jan 23 2026 at 03:23):

and whatever helpful stuff that roc-init is doing will almost certainly be folded into the official roc tooling at some point. roc-init is a temporary waystation on the way to 1.0 (as I see it)

view this post on Zulip Rick Hull (Jan 23 2026 at 16:39):

@Benjamin Nash I've updated the README significantly, and added some various platform options. I'd love to hear what you think.

view this post on Zulip Benjamin Nash (Jan 23 2026 at 16:47):

Looks good, including the part about config'ing Zed


Last updated: Feb 20 2026 at 12:27 UTC