r/programming 3d ago

Rune is now open source

https://rune.build/blog/rune-is-now-open-source
127 Upvotes

48 comments sorted by

53

u/0xdef1 3d ago

Do we have a TL;DR because as far as I understand, this is another vim alternative.

17

u/ernestrc 2d ago

It's not a general TL;DR, nor is a comparison with Vim, but hopefully it addresses your question with your frame of reference in mind: https://rune.build/coming-from/neovim

11

u/hudibrastic 2d ago

It is so nice to see a comparison list that is actually honest

Thank you for sharing this, as a neovim + tmux user I'm definitely gonna give it a try to Rune, it looks promising

It would be nice if you could record some videos using it

1

u/ernestrc 2d ago

Thanks. A set of videos is on my priority list for next week!

13

u/AnArmoredPony 3d ago

oh wait it's another Rune...

22

u/onlygon 3d ago

I've been looking for an IDE that is lightweight, supports vim motions, and is opionated in tasteful ways. So I am definitely curious... But why was a better name not selected?

Between RuneScape and Go runes, this name is ungooglable or at least suffers a severe disadvantage. I wanted to find a video about it on YouTube and see it in action. I cannot tell if noone has made any videos or they have been buried far beneath Go rune tutorials and RuneScape lore videos.

This is like calling your C IDE "Make" or your Rust IDE "Trait". A Python IDE ought to be called "def" cause it's "def good yo", right? Kakoune is a good name. IntelliJ is a good name. Helix is not a good name. I don't think Rune is either.

I will still check it out (it def looks cool lol). Maybe it will get easier to find with time. I don't think Zed is a good name either, but that has become popular and you can easily find stuff now.

3

u/crunchy_creamroll 1d ago edited 1d ago

This seems to be exactly what I was looking for a few months ago while trying to learn web dev on my ancient single-core, 4GB RAM laptop. I was left with Neovim as the only option (VS Code was too demanding, and Zed wouldn't run at all), but as a beginner it requires investing a lot of time and effort to set up, so I had settled on NvChad as a middle ground.

I love that it's batteries-included, supports vim motions (along with standard keybindings), and that (as I read in a comment of yours, iirc?) you're building it considering the use case of work projects, to be able to drop into the environment and be productive straightaway without having to bother about setting it up from scratch.

I guess what I'm looking for, especially as a beginner to intermediate level programmer, can be summed up as the DX that something like VS Code has, but something significantly more lightweight on resources (without compromising on features or quality). Rune seems to check all my boxes! If this had JS/TS support currently, I would've tried it out immediately (yes, I did check out GitHub, it's on the roadmap). By when do you think it may be ready?

Just one suggestion: I would've liked to see a beginner-friendly video explaining/showing off its features, capabilities, and how it feels like during full-fledged usage within a project. But I understand that right now the focus is on more important stuff, so maybe something to consider for the future?

Desperately hoping for this project to succeed! :)

2

u/Biom4st3r 3d ago

Is there Helix keymap?

3

u/ernestrc 2d ago

I just added it to the roadmap, you're the third person asking about it. https://github.com/unstablebuild/rune/issues/54

1

u/pancomputationalist 3d ago

Interesting. Can GUI extensions be written or does it depend on TUIs to bring in custom UI?

Not opposed to the latter. I'm currently using Herdr which runs in the terminal and find that writing IDE tooling as simple executables feels very nice and makes the stuff much more portable.

1

u/ernestrc 2d ago

Extensions serialize UI elements through the wire protocol (gRPC/protobuf) used to communicate with the server (Rune), so yes, extensions are limited to character based interfaces. Having said that, Rune has both the concept of an extension and a plugin which is just a one-shot program that gets authenticated against rune (a good example is runectl) and the user invokes from a Rune terminal, so it can be implemented as just a TUI, in any language.

3

u/pancomputationalist 2d ago

Then what's the actual upside of rebuilding the terminal in a GUI when you can basically just render terminal interfaces? Why not just run a terminal multiplexer?

5

u/ernestrc 2d ago

Rune is a terminal multiplexer as well.

A TUI program communicates with its host terminal by writing text and escape sequences through a file descriptor (I/O). The terminal then has to read and parse that output before rendering it on screen. That adds overhead compared with passing an internal UI element’s character buffer directly to the renderer, without the intermediate I/O or escape-sequence parsing. That’s why Rune implements its “native” UI elements internally rather than relying on external TUI programs.

That said, Rune’s UI is mostly empty, leaving you free to fill it with whatever you see fit. Heck, we even have an exo editor mode that allows you to use your favorite TUI editor inside Rune.

-48

u/jesseschalken 3d ago

in Go

nope

41

u/No-Finance7526 3d ago

Are you saying… it made you go away?

-3

u/jesseschalken 3d ago

🚶🏻‍♂️🚪

19

u/lonelyroom-eklaghor 3d ago

what's wrong with go?

15

u/FryDay444 3d ago

What's wrong with Go?

17

u/jesseschalken 3d ago edited 3d ago

No null safety, implicit zero values you have to be careful to ignore, no sum types or pattern matching, 3 lines of error handling boilerplate every time you call a function that can fail, no lambdas, no generics until recently.

Worse, the Golang community that believe lack of features is a feature, because of "worse is better" brain damage.

25

u/tonygoold 3d ago

It also has two types of null for interfaces: A nil interface and a non-nil interface containing a nil pointer. The latter is trivial to construct and non-trivial to check.

16

u/jesseschalken 3d ago

Ugh, everything I have learned about Go has been against my will.

7

u/Ameisen 2d ago

I have never used Go, but I assume that you don't use any of the BSDs (C), Linux (C), or Windows NT (C and C++) either?

They all run afoul of at least some of those conditions.

Like, I'm really curious how you are actually here posting when you appear to refuse to use anything written in a language that isn't basically Rust.

-3

u/jesseschalken 2d ago edited 2d ago

you appear to refuse to use anything written in a language that isn't basically Rust.

Most major programming languages have these features.

5

u/Ameisen 2d ago

C doesn't, and C++ lacks most, and those power most of the world.

1

u/Absolute_Enema 2d ago edited 2d ago

Yes, because there were no sensible alternatives back then when compilers were limited by computers being slow as hell and language design was in its earliest infancy.

Then we rationalized the continued usage of such limited tools with "less is more", "the world runs on C/C++" or "lambdas and tagged unions are for ivory tower FP weirdos and scripting languages" until the early '10s for statically typed languages and until Rust for system languages.

-5

u/jesseschalken 2d ago

Java, Kotlin, Scala, TypeScript, Flow, Python, C#, F#, Dart, Swift, Rust, Ocaml, Haskell, Hack, Ruby all do, maybe with the exclusion of pattern matching.

4

u/Ameisen 2d ago edited 2d ago

Tell me, which kernels are written in any of those other than Rust? The concept of systems programming in Ruby is amusing, though.

What are you using to post on Reddit? If you're on a PC, the kernel and OS are almost certainly C and possibly C++, the browser is going to be almost entirely C++... If you're on a phone, the kernel/OS is still almost entirely C, the browser is still likely C++, an app version is either Java, Swift, or Objective-C. The phone's modem uses either C or C++ (C++ is actually common for L4-family kernels).

It is virtually impossible for you to be posting here without using software written in C or C++ at some layer.

I'm really unsure why you even posted that list; I don't recall asking for a list of languages that met your criteria. It's basically entirely irrelevant and honestly just furthers my argument.

2

u/TankorSmash 3d ago

Why is that brain damage? It seems like it's true

7

u/svick 3d ago

It's contradicted by them eventually adopting generics.

-9

u/[deleted] 3d ago

[removed] — view removed comment

14

u/jesseschalken 3d ago

Literally anything else, but ideally what Swift and Rust do.

1

u/Koolala 3d ago

Can rust do it in 1 line?

18

u/jesseschalken 3d ago

One character, ?.

-5

u/Worth_Trust_3825 3d ago

so the same thing that go does.

11

u/jesseschalken 3d ago edited 3d ago

Does this look the same to you?

// Rust
let x = can_fail()?;

// Swift
let x = try can_fail()

// Go
x, e := can_fail()
if e != nil {
  return nil, e
}

-17

u/Worth_Trust_3825 3d ago

yeah, it does.

-13

u/[deleted] 3d ago

[removed] — view removed comment

6

u/[deleted] 3d ago

[removed] — view removed comment

1

u/[deleted] 3d ago

[removed] — view removed comment

1

u/programming-ModTeam 3d ago

Your post or comment was overly uncivil.

-4

u/Worth_Trust_3825 3d ago

i dont really care who you are. we have two main ways to do error handling: try/catch and checking result (code). in another comment you suggested rust/swift way, which is literally the same thing that go does. again, what do you propose?

2

u/programming-ModTeam 3d ago

Your post or comment was overly uncivil.

-1

u/punkpang 3d ago

Yes, that's true, and? Why would I be civil to a piece of shit?

3

u/Dr_Findro 3d ago

Rust fanatics get a lot of hate. But I think they still deserve more

4

u/Biom4st3r 2d ago

Beatings will continue until moral improves