top | item 40947450

Rye Language

94 points| emdashcomma | 1 year ago |ryelang.org | reply

56 comments

order
[+] xyst|1 year ago|reply
Wrote my first hello world and http server to get the ticker starting on “Rye Lang X years of experience”

Can’t wait for the “10 yeass of experience in Rye Lang [in 2026]” job posts from clueless recruiters

[+] galaxyLogic|1 year ago|reply
This sounds cool:

"Every active component in Rye is a function (if, loop, for, fn, return, extends, context). No keywords, no special forms."

It should make the language much simpler than other languages. The challenge of programming is dealing with copmplexity in code, and if the language takes away much of that complexity it should be a good thing.

[+] middayc|1 year ago|reply
Thanks, that comes from it's REBOL base ideas, but maybe it's even more pronounced in Rye where also operators are just "op-word" functions, and any function can be op-word/pipe-word (also the ones above if loop for ...).
[+] IshKebab|1 year ago|reply
That's a reasonably common feature in hobby languages, at least for basic flow control. I've seen it a few times before. You could say TCL works like this too in the most horrible way possible.
[+] cout|1 year ago|reply
This is a very good thing! Too many languages introduce keywords out of convenience, but in the end that makes the grammar more complex.
[+] bsder|1 year ago|reply
Apparently it's called "either" and it doesn't evaluate every arm.

So, explain to me how that is a function and not a special form?

[+] BiteCode_dev|1 year ago|reply
Interesting, but optional parenthesis is a no go for me.

Every time I try to read a Ruby line with no (), I have to stop and think.

Not being able to scan code is an anti feature.

[+] middayc|1 year ago|reply
Rye as Rebol (that it derives from) doesn't use parenthesis in general. In Rebol you can use them optionally for explicitly defining evaluation priority. But not in the same form as in Algol based languages:

    print(inc(x))
But like Lisps. I've used them when I wanted to be very certain about evaluation, but not in general.

    (print(inc x))
In Rebol (or Rye) this is usually just:

    print inc x
That's why all function in Rebol/Rye have fixed arity and yes, you generally have to know it or deduce it from the code, which is a minus.

Rye currently doesn't have parenthesis option, but it might get it at the end. It does have op and pipe words, an optional left to right flow, which can also better hint about the structure than pure polish notation of Rebol I think. For better of worse, these Rye expressions all do the same :) --

    print inc x
    print x .inc
    x .inc .print
    inc x |print
[+] hahajk|1 year ago|reply
Ha, I'm the opposite. Every time I'm writing python I have to stop and think "is it response.json or response.json()?" And then I think about how Ruby (I think nicely) solved the attribute/method decision problem.
[+] __MatrixMan__|1 year ago|reply
Ideally this would be a view setting, and could be enabled or disabled for different users without making edits to the code.
[+] emmanueloga_|1 year ago|reply
Q for Rye's author: Since Rye is heavily inspired by Rebol, I wonder if you had a chance to take a look at Red [1] and what are your thoughts about it. Red looks really cool and capable, but it feels so niche/obscure and has such a small community that feels unpractical to use.

--

1: https://www.red-lang.org/

[+] middayc|1 year ago|reply
I was/am a Rebol developer, and all Rebol developers know about Red as it was/is the next of Re(d|bol) languages, after we came to terms that the Rebol 3 which was about to concretely improve on Rebol 2, and be open source just won't happen.

Red also improved on Rebol 2 a lot and is a proper Rebol successor. It was started by a very productive and prominent Rebol developer, that I greatly appreciate. The only problem I see with it is that maybe they were too ambitious. They started with their own low level language (compiler) Red/system, and out of that built Red interpreter. They are really doing things as they should be done I think, but it's taking quite a lot of time.

Red, like in a way Rebol has a lot of focus on GUI and I needed a language for backend development. I was waiting for their "IO branch" for years, it was hard for me to contribute in a concrete way, since their approach was quite low level and at around 2018 started making a simple Rebol like interpreter in Go, because Go is great on the backend and I just wanted something that works, hence the higher level language than C/C++, that's now Rye.

Red is still moving forward, their community is mostly on gitter I think. It is small, but so was Rebol's and it's much bigger than Rye's, which doesn't really have a community yet :).

[+] pipeline_peak|1 year ago|reply
It's cool and weird at the same time.

Cool because I'd like to think if someone made a Netflix tech drama loosely based around Bell Labs in the early 80's, this would language would appear in that series. A language created by some Nordic computer scientist who angrily shakes his fist at the world because it doesn't get adopted due to it's weird syntax. Of course instead we get Awk.

[+] middayc|1 year ago|reply
Slavic, not a computer scientist, more of a lumberjack, otherwise very funny comment :)

Weird syntax might be just awesome syntax you don't yet know :)

[+] lsh0|1 year ago|reply
A similar language is Joker (https://github.com/candid82/joker), Go based, Clojure syntax. I've been using it for years as a general purpose scripting language and Clojure code linter and formatter - it's exceptional.

It doesn't integrate non-Joker Go code as far as I know.

[+] cout|1 year ago|reply
I don't often get excited when I see a new language, but this is really neat! It's not just another lisp or forth variant, but seems to be in a class of its own (if anything it reminds me of smalltalk, but claims to not be object oriented). I'm quite interested to see where this project goes!
[+] zX41ZdbW|1 year ago|reply
The first example is not convincing:

    lsp\ "prin"
It has two problems: - it's unclear why "prin", not "print"; - the usage of backslash looks scary.

Subsequent examples are also not good:

    bears .column? 'Area |unique
- overloaded syntax of '.' and '?' characters; - unbalanced quotes; - unbalanced whitespace around the '|' characters.
[+] middayc|1 year ago|reply
There are few conventions with Rye language. Variations of functions use \ character. Like. print , print\csv or read , read\lines ... these are separate functions, with similar goal, but most of the time different arguments.

There is a sub-convention that word\ just means like word(more), which usually means one (most obvious) additional argument. function `ls` lists current context and `ls\` accepts string, in this case "prin" and list all arguments that match it.

Rye (similar to Rebol) relies on multiple types of words to replace syntax (if that makes sense) and these types of words are denoted by specific characters at the start or the end usually.

.word is and op-word and takes first argument from the left |word is a pipe-word and is similar to op-word, but with different priority (more on that you can see on the website) 'word is lit-word (literal-word) ... quoted word in lisp terms (I suspect)

? at the end is a convention for "get" ... so noun? would mean get-noun ... so height? is convention for get-height. This is temporary "in testing" convention but so far it seems to function OK.

Thanks for your feedback.

[+] skybrian|1 year ago|reply
Hint: the "interactive" demos are scrollable by dragging the bottom. (Sadly, you don't have any access to the terminal window's scrollbar, so you can't just scroll to the end of the "video.")

I still think a non-animated transcript of a terminal session is better.

[+] middayc|1 year ago|reply
Maybe that my wording is off. This are not interactive demos, but more like demos of interactive use in console ... "animated interaction demos". These use asciinema, which is a nice tool and I think it's good to display interesting interactions compactly. But yes, for deeper look it moves too fast for one, so something what you describe could be better. I could have these animations for getting attention and then linking to transcripted, detailed document. Do you have any example of a good way of displaying such console session statically?
[+] ejstembler|1 year ago|reply
Looks interesting! +2 for Postgres and AWS support. Looking forward to GCP support someday...
[+] middayc|1 year ago|reply
Rye is Go based, and Go has a great number of well done libraries. Integrating Go libraries into Rye by hand is very simple and I was able to add plenty of them, at least at proof of concept level just on my own.

Rye-front is also an experiment of how you can externally extend Rye, by adding Rye to your code/library. In this case the main focus is Go GUI library Fyne.

Now a colleague is writing a tool that auto-generates Fyne bindings and has already made great progress (Fyne has couple of 1000 functions/structs/... If we will be able to generalize this to any Go library, this will be really exciting.

[+] lenkite|1 year ago|reply
Hopefully Rye will support the dataframe interchange protocol. Then it can be easily used with existing visualization frameworks.
[+] middayc|1 year ago|reply
I haven't heard about this one yet. Rye has "spreadsheet" datatype which is humanized dataframe basically. I will look into this, thanks!
[+] ilyagr|1 year ago|reply
FYI, Rye is the name of a tool that's gaining popularity in the Python world. https://github.com/astral-sh/rye
[+] middayc|1 year ago|reply
I know about Rye package manager since last year. I've made a rye(lang) blogspot and github repository in 2020. I try to use term ryelang in general so there is a distinction. Otherwise, what can I do. I have no spare name and reason to rename right now, at the end, a name is just a name ...
[+] alextremblay|1 year ago|reply
I believe the astral devs plan to eventually merge rye into their “uv” tool, so this may end up being a self-correcting problem
[+] mofoteam|1 year ago|reply

[deleted]

[+] middayc|1 year ago|reply
why would cereals be worse than precious stones? :)
[+] xpe|1 year ago|reply
Yeah, they've gone way too farro. Wheat are they thinking? Barley anyone knows how to spelt amaranth. Please millet over.