[HN Gopher] Red: A programming language inspired by REBOL
       ___________________________________________________________________
        
       Red: A programming language inspired by REBOL
        
       Author : ducktective
       Score  : 69 points
       Date   : 2021-07-14 17:05 UTC (2 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | olah_1 wrote:
       | No release since 2018?
       | 
       | They seemed to have been derailed by the focus on crypto-currency
       | as a solution to funding.
       | 
       | In a bitter irony, they were too early to the party. Had they
       | continued momentum on regular work, they could now have used
       | gitcoin to fund work.
       | 
       | I hope this project continues though. I wish them nothing but the
       | best!
        
         | greggirwin wrote:
         | Automated builds are the way to go. We're revamping our release
         | process to avoid stale-binary syndrome. If you don't follow us
         | on Gitter, where you'll see active chat every day, you can look
         | at https://progress.red-lang.org/ to see what's been done. Or
         | just look at github graphs of commits.
         | 
         | We absolutely lost some focus with the blockchain aspect, and
         | are rolling with all the punches as best we can. Sustainability
         | is key, so we're also working on commercial products to that
         | end. Got our first one out last year, and the next one is in
         | the planning stages.
         | 
         | Our first product is https://www.redlake-
         | tech.com/products/diagrammar-for-windows..., and all features
         | are enabled for free. The only limitation is that exported
         | images are watermarked. We also sponsor licenses for other FOSS
         | projects.
        
           | 7thaccount wrote:
           | Diagrammar looks interesting. Is there enough demand for it
           | though? Wish y'all the best!
        
       | Bluestein wrote:
       | REBOL was so far ahead of its time ...
        
         | vincent-toups wrote:
         | As an old Lisp/Scheme guy all I can think whenever I try to
         | figure out what is going on with Rebol/Red is "What a mess."
        
           | yawn wrote:
           | What mess do you mean? The language, what happened to the
           | language because of Rebol Technologies, or something else?
        
           | ducktective wrote:
           | Can you please elaborate? ;) As a person who has 0 knowledge
           | on the likes of PROLOG, LISP, etc...What makes LISP and LISP-
           | like languages so great? I tried to search YouTube on the
           | merits of LISP or this notion of "data as code" but nothing
           | tangible came up... I mean LISP is one of the oldest
           | languages with really weird features w.r.t to C-like
           | languages but in practice we only see C-likes...even Rust is
           | not so different from this family of languages...
        
             | chriswarbo wrote:
             | > I mean LISP is one of the oldest languages with really
             | weird features w.r.t to C-like languages but in practice we
             | only see C-likes
             | 
             | Scripting languages are much closer to Lisp than to C (e.g.
             | compare Python to Racket).
             | 
             | IIRC Ruby, Javascript and Smalltalk (the latter inspiring a
             | lot of OOP languages) were all explicitly designed to be
             | like Lisp.
        
         | macintux wrote:
         | Any recommended reading?
        
           | sreekotay wrote:
           | The main site pretty good.
           | 
           | http://www.rebol.com/docs.html
           | 
           | Note, OP likely talking about Rebol 2.
           | 
           | Rebol 3 and Red were/are (sort of) forks...
        
         | jibbit wrote:
         | One of my modest ambitions is to finally understand how Scopes
         | work in REBOL
        
           | greggirwin wrote:
           | One of our team summed it up very nicely: Pragmatically, this
           | design notion comes from Red being a data format first (code
           | is data and data can be used as code). To mimick scoping at
           | data level, context has to be implicit. As a consequence, any
           | block of code e.g. [take the spoon] can be passed around,
           | evaluated on demand in any place, used in user-defined custom
           | loops, without losing the original meaning even if all it's
           | words `take`, `the` and `spoon` were defined differently in
           | those loops or other functions.
           | 
           | Rebol's designer called this "definitional scoping". What it
           | means is that _where_ a word (variable) exists is important.
           | The  "where" part leads to
           | https://github.com/red/red/wiki/%5BDOC%5D-Why-you-have-to-
           | co... and is one of the big things that messes with your head
           | when you come to Red from other langs. :^) For many people
           | this stays invisible forever and things just work. But it
           | doesn't take much for people to step off the ledge and into
           | deep water, because things look so easy and it seems like you
           | should be able to just pass blocks around and have everything
           | work magically. It's internally consistent in how it works,
           | but that's hard to see without tooling we have yet to build.
        
             | wizzwizz4 wrote:
             | Oh, so it's like Rust's `macro_rules!` identifier rule?
             | 
             | Rust's `macro_rules!` macros operate on ASTs, so the `x`
             | inside a macro definition is different to the `x` in the
             | scope where the macro is used, even though the _textual_
             | representation of the identifier the macro inserts into the
             | place it 's used might be identical. This means that:
             | macro_rules! add_two {           ($i: ident) => {
             | let x = 2;               $i += x;           }       }
             | fn main() {           let mut x = 5;           add_two!(x);
             | println!("{}", x);       }
             | 
             | _appears_ to become:                 fn main() {
             | let mut x = 5;           let x = 2;           x += x;
             | println!("{}", x);       }
             | 
             | but it still prints 7, not 4, because they're two different
             | `x`s. (Of course, Red has first-class metaprogramming, so
             | it's a lot better.)
        
               | greggirwin wrote:
               | Something like that, yes. Red has macros as well, with a
               | key difference being that at compile time, for all
               | macros, there is no runtime context to bind to. Sometimes
               | this helps, sometimes it's a limitation. For example,
               | interpolation at runtime can be tricky, but isn't as
               | flexible if done with macros.
        
         | xvilka wrote:
         | I think modern concept-equivalent would be Racket with its
         | visual features out of the box. In practice, though, it's
         | unsustainable because of different OS graphics stack,
         | complexity of frameworks like Qt and GTK that themselves
         | changing often, the speed of changes in underlying draw
         | technologies, etc.
        
       | azhenley wrote:
       | First line of the readme: _Red is a *new* programming language
       | strongly inspired by Rebol_.
       | 
       | There are over 13,000 commits in nearly 10 years and it has been
       | discussed dozens of times on HN. I understand it isn't old, but
       | is this actually new?
        
         | greggirwin wrote:
         | Of course we have to define "new". And consider that it _was_
         | new when that was written. :^)
         | 
         | It shares syntax with Rebol, 95% of it anyway, but many other
         | "new" languages share syntax with older languages. In any case,
         | there are many new things about it, including being a from-
         | scratch implementation.
         | 
         | - Native GUI system (non-native in development for those who
         | want to go that way) driven by a GUI DSL, with full reactivity
         | built in. - Reactivity and ownership features are built into
         | the core object datatype, so they can be used for more than
         | GUIs. - System level DSL. Red/System is a C level language, but
         | is a dialect of Red. It compiles directly to machine code, not
         | ASM or C. Cross compilation is built in as well. Again, no
         | external tools needed. - Android is out of date, but it also
         | requires no JDK or other IDE.
         | 
         | So there are at least some things that make it new-ish.
        
       | Normille wrote:
       | Should mention it won't run on 64bit OSes:
       | 
       | https://github.com/red/red/issues/4359
        
         | spijdar wrote:
         | Won't run on 64 bit _only_ OSes. OSes with 32 bit multilib
         | runtimes will do fine.
         | 
         | Worth pointing out that those are becoming increasingly
         | uncommon, with Apple already having dropped it, and Microsoft
         | dropping it from Windows 11 (EDIT: okay, I misremembered:
         | Microsoft is dropping support for 32 bit installs, not WoW64).
         | For the moment, 32 bit x86 multilib is still common on Linux,
         | but I wouldn't be surprised to see it start to disappear in the
         | next 5-10 years.
         | 
         | So this isn't an immediate problem for _most_ people not
         | running MacOS, but will eventually be a pretty big problem in
         | the next decade for this project.
        
         | greggirwin wrote:
         | 64-bit is high on our list, but also a huge task, so needs a
         | large block of time where other things won't get done. We have
         | some big features we're pushing on now, and will update our
         | roadmap accordingly.
        
         | anta40 wrote:
         | Yeah that's still an unsolved issue.
         | 
         | Now I mostly work on macOS for mobile apps development, and
         | sadly can't run Red.
        
       | ducktective wrote:
       | This language has been under my radar for some time. Recently, I
       | asked a question about "automatic GUI creators" [1] but
       | suggestions were not what I was looking for.
       | 
       | [1]: https://news.ycombinator.com/item?id=27820141
       | 
       | Then, I decided to google some keywords (like GUI DSLs) limiting
       | it to HN threads. Someone suggested: 'this is essentially
       | REBOL...'. Then I went to this rabbit-hole of REBOL, RED,
       | homoiconicity, DSLs....
       | 
       | Fun Fact: Did you know the whole compiler and interpreter of Red
       | with all batteries included (including cross-platfrom GUI
       | bindings) is a ~1 MiB single binary?!!
       | 
       | Some links:
       | 
       | Red's originator talk:
       | https://www.youtube.com/watch?v=-KqNO_sDqm4
       | 
       | Red sample programs: https://github.com/red/community/
       | 
       | Especially this `parse` dialect seem to be a "readable" regexp:
       | https://github.com/red/community/tree/master/parse
        
         | 7thaccount wrote:
         | On my radar for ages as well, but it's never quite ready. Very
         | ambitious.
         | 
         | If they ever get it working as intended, it will be a game
         | changer to be able to write small executables with a GUI,
         | DSLs...etc while staying so lightweight. Good luck to the team.
         | It's been a little weird that I haven't seen a new blog post in
         | so long (almost a year), when updates used to happen fairly
         | often.
        
         | [deleted]
        
       | svnpenn wrote:
       | compiling a simple program takes 30 seconds:
       | 
       | https://github.com/red/red/issues/3412
        
         | greggirwin wrote:
         | Did you notice a) that the ticket is closed, and b) it was a
         | bad ticket to begin with? See this comment in there:
         | https://github.com/red/red/issues/3412#issuecomment-39595136...
         | 
         | Yes, if you rebuild the runtime when you compile, it's slow. If
         | you use dev mode, because you're not changing anything in the
         | runtime, it's fast.
        
           | svnpenn wrote:
           | Did _you_ notice, that pretty much every single major
           | language today offers static compile? C, Go, Rust, D, Nim.
           | Why does Red think its special to not offer a static compile?
        
       | azhenley wrote:
       | This language has been discussed a lot here over the years. A few
       | big ones:
       | 
       | https://news.ycombinator.com/item?id=18843544
       | 
       | https://news.ycombinator.com/item?id=8611922
       | 
       | https://news.ycombinator.com/item?id=14793517
        
       | bakoo wrote:
       | In my opinion REBOL was a great idea, and I also wrote quite a
       | few extremely terse but readable inhouse apps before REBOL v2
       | development completely halted, and a useable v3 never
       | materialized. As proprietary payware, it didn't really stand a
       | chance.
       | 
       | I hope Red turns out better, but they're a bit late to the party,
       | and need a lot more hands to evolve. Since I'm not in a position
       | to help, I'll stick with Go + fyne for whatever can't be a web
       | app.
        
       | djedr wrote:
       | What is nicer syntax-wise in Red/REBOL compared to Lisp is the
       | slightly lower number of brackets and nesting. And the C-style
       | formatting of brackets -- with closing brackets aligned with
       | their counterparts. It is a little more verbose, but easier to
       | read.
       | 
       | Plus the square brackets are easier to type than the round ones.
       | 
       | Overall the design of REBOLs is pretty interesting and IMO
       | somewhat reminiscent of Tcl. Both are certainly good inspirations
       | for minimalist language designers.
        
       ___________________________________________________________________
       (page generated 2021-07-16 23:01 UTC)