1. 46
  1. 31

    I used to care a lot more about “adoption” and “usefulness” (which is a funny thing to say, I know), but there are so many languages out there and so many ways to do things that at this point, I’m much more interested in seeing what people build for themselves and for their specific niche/needs.

    I really like this article, and I hope Hare accomplishes what Drew hopes it accomplishes.

    1. 8

      There’s something to be said about a constrained, finite design space. The stars are too vast to build up to.

    2. 30

      For context, this is a response to the LWN thread on Hare’s announcement, where the author had several discussions comparing Hare to C, Rust, and Zig. There’s unlinked reference to this comment.

      1. 3

        Nice find! Thanks for pulling that out.

      2. 28

        I think Hare is the gemini of programming languages. It’s trying to return to a simpler time by removing most of the complexity by removing most of the modern features; it tries to build a community of people who enjoy that (people who like C, maybe Go, plan9, etc.); it doesn’t aim at being popular; and it probably won’t be because all its competitors are more appealing to “modern” tastes. Having union types is the pinch of modernity, just like gemini’s use of TLS in an otherwise decidely-1980s tech stack.

        1. 7

          I would argue it’s error handling is quite modern too. IMO it’s quite a bit better than Go’s (primarily because of the tagged union types).

        2. 7

          Hare looks cool for what it is, I tried it. However, the compiler currently at least is extremely rudimentary, the errors are confusing, it calls the bootstrap compiler to compile hare code, and it seems to not recognize standard library modules sometimes. I’m a huge zig fan myself, but I’m a language enthusiast at the same time, so I’m hoping hare will grow.

          1. 4

            By way of explaining flag: I was under the impression that projects by this language’s creator, in addition to the creator’s own account, were banned here due to the creator’s excessive self-promotion.

            1. 16

              It was the endless hot takes and pouring gas on arguments that got @drewdevault banned. The fact that his business partner @emersion immediately started posting mirrors of his rants to evade the ban made me think that this was all outrage marketing, picking a fight to get attention to the business projects, so maybe that’s where you got the idea that it was about excessive self-promotion?

              Regardless of their intentions for marketing, no, all of his projects are not banned. For example, we have plenty of links to sourcehut. Also see my other comment here for details on how harelang.org was banned to honor a request from DeVault.

              1. 4

                What’s wrong with hot takes?

                1. 3

                  Note: “endless”, i.e. constant arguing, probably a bit on the aggressive side

                  1. 5

                    I assume that’s what /u/pushcx meant by “pouring gas on arguments,” which is not the part that threw me off. If a hot take is “an opinion that is likely to cause controversy or is unpopular” (UD) that doesn’t seem like something that should contribute to a ban.

                    1. 2

                      Ah, sorry for the confusion, my working definition for “hot take” is more like “a cynical or glib response to current news, usually highly moralizing”.

                2. 2

                  That makes sense, I had only dim memories of how it went down, but I remembered there was at least a suspicion of marketing/promotion problems. In that case I rescind my flag.

                3. 7

                  projects by this language’s creator

                  No, it was just his blog and account.

                  creator’s excessive self-promotion.

                  Again, no, it was mostly due to him writing hot takes and then showing up here to join the ensuing flamefest.

                  In any case, this hardly counts as self-promotion, considering that he didn’t post it.

                  1. 3

                    projects by this language’s creator

                    Why would that be the case?

                    1. 3

                      As far as I can tell (from the moderation log) the ban on harelang.org was lifted about a week ago. Maybe the creator acted poorly in the past, but it seems like Drew has been given a second chance which I think is great!

                      1. 24

                        The site previously had a note asking readers not to submit it to social news sites. Banning let us be polite and honor that, rather than the site having done anything we consider abusive. The ban message was The page asks "Please do not share this website with others", please ping me to lift this if that changes. Several people, including DeVault, pinged me when the announcement post went up, so I lifted that ban.

                    2. 4

                      OK, so proposing to hold the PL implementation developers responsible for use-after-free bugs is so not cool.

                      And I’m very sympathetic to experimentation in PL in general. Who doesn’t like more toys (ideas) and the chance to see how they play (fit) together?

                      But I think we (as an industry) should not take very seriously any PL that doesn’t try to push the status quo with regards to: correctness, safety, speed, expressiveness and such. And we all need to seriously consider this when choosing to implement a library or application in a particular PL. If this component is going to be used by millions, then it is our moral obligation to choose one of the best tools for the job… and not a toy.

                      To repeat: Toys are great! But serious work requires serious tools. If you aren’t using serious tools for your own work… why not?

                      1. 5

                        OK, so proposing to hold the PL implementation developers responsible for use-after-free bugs is so not cool.

                        That interpretation is on Drew, if you view the entire thread where the comment is included, you’ll see the word “liable” is used, in a moral, not legal sense.

                        Here’s the article: https://lwn.net/Articles/893285/

                        Here’s the comment by mjg59: https://lwn.net/Articles/893346/

                        I think we’re at the point in history where anyone who writes a compiler that permits use-after-free should be held liable for anyone who manages to fuck up as a result of that.

                        A bit further along, Drew has convinced himself he’s gonna be charged for criminal negligence: https://lwn.net/Articles/893510/

                        1. 4

                          FWIW, while I read mjg59’s comment as hyperbole, it read like more of a legal sense than a moral one to me. It was the sentence after the one you quoted that steered me that way:

                          Security issues aren’t a matter of inconvenience now - we’re reached a level of pervasive tech that results in people literally dying as a result of memory unsafety.

                          Saying someone should be “held liable” for “people literally dying” sounds legal to me.

                          Your read sounds reasonable to me, but it was not where I landed at first when I read the comment about “people literally dying.”

                      2. 3

                        Hare will not replace anything, just like Rust didn’t replace anything, and just like any other language created with the goal of replacing a language ever replaced anything.

                        1. 9

                          I think the word “replace” here doesn’t mean necessarily mean complete and total replacement of one thing with another. That has… probably never happened with any language(?)

                          What I think it means in this context is that someone may choose to use it over some other existing language, so in a way it has “replaced” the older language in that particular instance. In other words, if I am writing a new tool, hare might “replace” C or something else in my list of possible languages to write it in.

                          1. 6

                            I think that’s the right definition, and a newer language might “replace” another in proportion of how many projects pick it instead of the older language. As a concrete example, Zig replaced C in the ncdu project.

                          2. 8

                            created with the goal of replacing a language

                            I don’t think replacing C/C++ was a goal of Rust. From original presentation (http://venge.net/graydon/talks/intro-talk-2.pdf)

                            • Relax.
                            • There is no master plan, nefarious plot, etc.
                            • You are not going to be forced to use it.
                            • We are not “rewriting the browser”. That’s impossible. Put down the gun.
                            • We do not know what exactly will come of it.
                            • It was a coincidence of a maturing side project and a desire for some slightly less-annoying language technology, nothing crazy.
                            1. 4

                              C has replaced BCPL

                              1. 1

                                C++ largely replaced Pascal.

                                1. 1

                                  BCPL was never widely used.

                                  1. 2

                                    The only commercial product I’m aware of that used BCPL is TriPOS, which was ported to the Amiga to become AmigaDOS (the filesystem portion of the operating system).

                              2. 3

                                I dont really understand why any language has to replace anything especially when it comes to more experimental side of languages. Hare is clearly made for people who want to try something new that harkens to “old days.”

                                I feel like all these tools have their places. And even if some tools are more or less “toys” (and i dont mean that in a mean way), they have their place. Sometimes you need a new language just think of things differently, and it may help you in other tools.

                                In the end, who doesnt like to play around with a some new thing, even they didnt end up using it as much as they thought? The knowledge gained from this new thing is almost always valuable, IMO.