Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Programming

How Rust Went From a Side Project To the World's Most-Loved Programming Language (technologyreview.com) 118

An anonymous reader quotes a report from MIT Technology Review: Many software projects emerge because -- somewhere out there -- a programmer had a personal problem to solve. That's more or less what happened to Graydon Hoare. In 2006, Hoare was a 29-year-old computer programmer working for Mozilla, the open-source browser company. Returning home to his apartment in Vancouver, he found that the elevator was out of order; its software had crashed. This wasn't the first time it had happened, either. Hoare lived on the 21st floor, and as he climbed the stairs, he got annoyed. "It's ridiculous," he thought, "that we computer people couldn't even make an elevator that works without crashing!" Many such crashes, Hoare knew, are due to problems with how a program uses memory. The software inside devices like elevators is often written in languages like C++ or C, which are famous for allowing programmers to write code that runs very quickly and is quite compact. The problem is those languages also make it easy to accidentally introduce memory bugs -- errors that will cause a crash. Microsoft estimates that 70% of the vulnerabilities in its code are due to memory errors from code written in these languages.

Most of us, if we found ourselves trudging up 21 flights of stairs, would just get pissed off and leave it there. But Hoare decided to do something about it. He opened his laptop and began designing a new computer language, one that he hoped would make it possible to write small, fast code without memory bugs. He named it Rust, after a group of remarkably hardy fungi that are, he says, "over-engineered for survival." Seventeen years later, Rust has become one of the hottest new languages on the planet -- maybe the hottest. There are 2.8 million coders writing in Rust, and companies from Microsoft to Amazon regard it as key to their future. The chat platform Discord used Rust to speed up its system, Dropbox uses it to sync files to your computer, and Cloudflare uses it to process more than 20% of all internet traffic.

When the coder discussion board Stack Overflow conducts its annual poll of developers around the world, Rust has been rated the most "loved" programming language for seven years running. Even the US government is avidly promoting software in Rust as a way to make its processes more secure. The language has become, like many successful open-source projects, a barn-raising: there are now hundreds of die-hard contributors, many of them volunteers. Hoare himself stepped aside from the project in 2013, happy to turn it over to those other engineers, including a core team at Mozilla. It isn't unusual for someone to make a new computer language. Plenty of coders create little ones as side projects all the time. But it's meteor-strike rare for one to take hold and become part of the pantheon of well-known languages alongside, say, JavaScript or Python or Java. How did Rust do it?

This discussion has been archived. No new comments can be posted.

How Rust Went From a Side Project To the World's Most-Loved Programming Language

Comments Filter:
  • World's most loved? (Score:5, Informative)

    by lsllll ( 830002 ) on Tuesday February 14, 2023 @06:02PM (#63293389)
    Exaggerating a bit here, aren't we?
    • by cruff ( 171569 ) on Tuesday February 14, 2023 @06:11PM (#63293417)
      Most loved, for some self-selected subset of coders more likely.
    • Comment removed based on user account deletion
    • I'm not sure if "world's most loved" applies either, for sure though you could use "worlds most heavily promoted" programming language.

    • by 93 Escort Wagon ( 326346 ) on Tuesday February 14, 2023 @06:36PM (#63293483)

      Well, I will allow that Rust coders keep telling us how great their language is more than any other coders.

      But maybe another term would be a better fit. Most zealous? Most smug? Most annoying?

      • Re: (Score:1, Flamebait)

        by TuringTest ( 533084 )

        Tell me of another systems language that provides memory safety and higher-order functions, and I'll tell you about a language that can boast of being one of the best.

        • Ada. It was "World's most loved" (tm) programming language at the time destined to become dominant language for general purpose and systems programming.
          • Ada didn't really deliver much to make it really stand out from the alternatives already available at the time. That is to say, there was never much of a compelling reason to do greenfield work in Ada for most projects. Rust on the other hand, has a lot of compelling reasons to do so, hence it seems Google and Microsoft (and probably others) are doing virtually all greenfield systems work in Rust.

            Ada currently has a niche for certain technology segments, however it currently offers no notable advantages for

            • What is greenfield of brownfield work supposed to mean?

              Ada was supposed to be "the embedded" language and in that focusing on Space and Aircraft industries.

              Neither was there something comparable at "that time" when it was incepted nor is there now.

              The reason it is a niche language, just like Eiffel, is simple: early vendors considered it a money machine and asked for insane prices.

              • "Greenfield" = developing shiny new stuff from scratch.

                "Brownfield" = having to Band-aid over legacy crap that no one understands in order to meet impossible deadlines with few resources and less money, that you will never control, but will get blamed for when the completely predictable and usual crap ends up happening.

                Most development is brownfield. If you're lucky enough to work somewhere that isn't the case, consider yourself blessed.

              • What is greenfield of brownfield work supposed to mean?

                Instead of making half-assed assumptions about the meaning of my post, you could have saved yourself the embarrassment by googling it.

                • Both show no result related to software development.
                  But a nice guy who is not an asshole, like you, explained it a day ago.

                  • Both show no result related to software development.

                    It's a term relevant to any kind of project, not just software development.

                    But a nice guy who is not an asshole, like you, explained it a day ago.

                    I'm normally a pretty nice guy, but you're a total dick. I'm not nice to dicks, particularly of the communofascist variety.

          • Ada is like the Velvet Underground, Cardiacs or Mothers of Invention. Chances are you havent heard any of those bands, but you can guarantee your favorite bands have.

            It was a great little language, and to this day still reads fantastically. But it just never really happened big. But so many important languages owe a lot to it.

      • They're the most zealous, but they're not the most smug. They don't have enough letters after their names to out-smug Haskell.

    • by Dutch Gun ( 899105 ) on Tuesday February 14, 2023 @06:37PM (#63293485)

      Sort of. Given the relative youth of the language, by nature relatively few people are actually using it in anger, on real-world projects with all the messy, real-world requirements and pressures that go along with that. At least compared to C/C++, Java, C#, Javascript, etc.

      I kind of suspect that programmers love what they HEAR about it, may even love it as they're learning more about it. In other words, the love the IDEA of such a language. I mean, I guess I do too. In theory. I just haven't used it in any substantial project before, so I don't know how it would really hold up.

      We'll see what happens when it becomes a bit more entrenched in the real world, if people still view it as fondly. We've already had at least one post-Rust article filled with cautionary tales about the language being difficult to use and iterate with.

      • Been playing around with it very very minimally as someone who has not really coded in 10 years.
        I like the syntax in general, it is a straight forward. Their are a surprising number of languages that seem to unnessesarrioll;y stray from the standard C, Java norm for no perceivable benefit.
        But it is very very verbose. Most of your code is unwrapping `Option` and `Result`, so you tac `.unwrap()` on every other line basically. Unfortunatly, this can get quite excessive, with many lines containing like 5 intern

    • In the world of programming language fanbois. The rest of us are too busy shoving the dirt they leave behind.
    • That's exactly what I thought. If you look around, the actual use of Rust, at this point, is pretty small. And Rust is 'just another language' and also relies on the actual used compiler/framework to not have any bugs/security holes.
  • by reanjr ( 588767 ) on Tuesday February 14, 2023 @06:05PM (#63293399) Homepage

    If there's any real world problem that shouldn't require dynamic memory allocation, an elevator would be it. This is an interview question for a junior developer. There's really no excuse and Rust don't fix stupid.

    • Re:Flawed assessment (Score:5, Interesting)

      by ShanghaiBill ( 739463 ) on Tuesday February 14, 2023 @06:30PM (#63293461)

      If there's any real world problem that shouldn't require dynamic memory allocation, an elevator would be it.

      MISRA C [wikipedia.org] prohibits the use of dynamic memory.

      Rust don't fix stupid.

      Actually, it does. The sort of bugs that Rust prevents are mostly mistakes made by stupid people. Writing reliable code in C++ isn't hard if you are knowledgeable and disciplined. But most people aren't.

      • by guruevi ( 827432 ) on Tuesday February 14, 2023 @06:53PM (#63293509)

        Itâ(TM)s unlikely the kind of chips used in elevators have a Rust tool chain.

        I also donâ(TM)t think itâ(TM)s memory management that is a major issue, most embedded projects that donâ(TM)t work well Iâ(TM)ve worked with is because the programmer and implementation donâ(TM)t agree (due to lack of documentation, project management or communication).

        Elevators will likely use the same system that has worked for decades but keep bolting on third party features and middleware to implement new features like remote management.

          At some point the inputs from all these systems donâ(TM)t agree with the 1980s state machine and the system goes into safe mode or crashes.

        I see this all the time in medical equipment, it will be a simple design from the 90s that works well standalone, then someone wants remote control so they bolt on an ESP for Ethernet/WiFi connectivity, expecting the technician serial port to take in data from a Java Web App GUI, which works, until you give the command out of order or the Java stack reboots in between two commands so it just sits there waiting. The original designer expected all interaction to be someone knowledgeable on a terminal, able to deduce the current state from physical buttons, chirps and lights, not a stateless machine.

        • Itâ(TM)s unlikely the kind of chips used in elevators have a Rust tool chain.

          You are very likely wrong about that. Rust works for several popular microcontrollers, including sub-$1 AVRs.

          Rust works on the ATMega328 used in Arduinos.

          • by Gibgezr ( 2025238 ) on Tuesday February 14, 2023 @10:05PM (#63293931)

            He seems to be correct. The microcontrollers you mentioned are more for hobbyists. Elevators use stuff like the 89c51, and I didn't see a Rust compiler supporting that.
            I may be wrong; I just did some quick Googling.

            • by guruevi ( 827432 )

              Generally it is a microcontroller of unspecified type for the actual I/O controller and an embedded 486/Pentium running Windows 98-XP for the 'user' interface (RS485)

      • Then use Python. It does far better protection.
      • Rust don't fix stupid.

        Actually, it does. The sort of bugs that Rust prevents are mostly mistakes made by stupid people. Writing reliable code in C++ isn't hard if you are knowledgeable and disciplined. But most people aren't.

        The best tool ever created to fix stupid was Visual Basic. That's why "fixing stupid" is not the top trait I am looking for when evaluating programming languages.

        • VB did not fix stupid. It created tons of it.

          True story:

          Pre-.NET (90s), Visual Basic did not have great built-in algorithms for sorting things. Hence . . . .

          Q on some forum (probably at the time IRC or Usenet): "How do I sort an array?"

          A: "Create an invisible text box. Put the items in the box. Then, set its 'Sorted' property to True. Then read them back out."

          Sometimes stated satirically. Sometimes not.

      • Who's using C++ to program elevators? Seems like a specious argument.

        • Probably not C++, but C isn't unreasonable, and it has many of the same footguns.

          • C and C++ aren't even in the same ballpark when it comes to understanding how to manage memory. Sure, you can write C in C++ (mostly), but assuming you're using C++ features, understanding memory management becomes way more complicated very quickly.

            C is largely a cross-platform assembly language. It's very straightforward to understand what's going on under the hood.

      • The sort of bugs that Rust prevents are mostly mistakes made by stupid people. Writing reliable code in C++ isn't hard if you are knowledgeable and disciplined. But most people aren't.

        To be honest, it seems that only stupid people claim to actually be that good. It just smells of overconfidence. Exactly the kind of overconfidence that causes otherwise skilled people to overlook simple shit.

        Or worse, people that think they're good enough to avoid these mistakes but really aren't. FWIW, I've never claimed to be an expert at software development myself, but I know a bullshitter when I see one, and...well take for example this guy, who claims to be some kind of C++ guru. Yet look at the stup

        • I don't know many C++ developers, but so far ALL of the ones I've measured in some way tend to way overstate their ability.
          All programmers do. And it is certainly not tied to the language used ...

          • Yes, but C++ is a much larger foot-gun. Very few people can use C++ competently.

          • Actually, decent developers make a point to understand their current strengths and weaknesses, to be honest about them, and to not try to pick up a proverbial chainsaw too heavy for them to lift. I won't hire someone I think might be lying about their abilities, nor the limitations thereof. What I want to hear instead is something like "no, I'm not great at Ruby, but I'm willing to learn, and I can do Perl/Python/Lua/whatever, which fills a similar problem domain."

            I am great in some areas, and I suck in o

          • I don't. In fact people often say that I undersell my own skills.

            • Underselling your own skills is not the same as assessing them to high.

              You most certainly do both, which is obvious from your nonsense posts about Germany, history, or my knowledge about history, etc. p.p.

              • Underselling your own skills is not the same as assessing them to high.

                Just as people tell me that I tend to assess them low as well.

                You most certainly do both, which is obvious from your nonsense posts about Germany, history, or my knowledge about history, etc. p.p.

                First, that has nothing to do with programming. Second, you've been sitting here this whole time insisting things about Germany that were false, and now inexplicably you're changing your argument.

      • by gweihir ( 88907 )

        Rust don't fix stupid.

        Actually, it does. The sort of bugs that Rust prevents are mostly mistakes made by stupid people. Writing reliable code in C++ isn't hard if you are knowledgeable and disciplined. But most people aren't.

        Nope. Stupid people make tons of other mistakes, sometimes extremely inventive ones. A tool that hides their stupidity just makes the overall problem worse. The solution is not to give these people Rust. The only working solution is to not have these people write code.

    • Jesus, if you wanted to sound like a programmer who doesn't know very much, congratulations.

    • If Rust can make it so stupid doesnâ(TM)t compile, thatâ(TM)s good enough for me.

      • If Rust can make it so stupid doesnâ(TM)t compile, thatâ(TM)s good enough for me.

        Hint: It can't.

    • by gweihir ( 88907 )

      Rust don't fix stupid.

      That is what the Rust fanatics cannot see. Probably because they are pretty much in that demographic....

      • It prevents certain types of stupid.

        Sure, there are others, but one particular type that it seeks to prevent - memory safety violations - happens to be the one that causes a good majority of security-related incidents.

        • Comment removed based on user account deletion
          • I stand corrected. "Stupid" is too strong if it is referring to mistakes that very few of us could possibly avoid making.

            But it does seem a bit stupid if one keeps making the same costly mistakes over and over when there is a way to do better, which, in at least some situations, including those where GC languages like Java or C# were not suited, Rust very well may be.

  • what's the laravel, django, ruby on rails of the rust ecosystem?

    • For back end, the most popular are actix and rocket. Actix in particular is well known for being very fast (if not the fastest in existence, depending on the use case) and very reliable. I'm not aware of any front end projects, though nearly all of the rust GUI frameworks (if not every last one of them) will run within a web browser. Some of them output as HTML, and some, like druid, do 100% of the graphics in WASM.

  • by Futurepower(R) ( 558542 ) on Tuesday February 14, 2023 @06:05PM (#63293403) Homepage
    I wish a better name had been chosen.

    RUST - Makes iron into useless red dust.
    RUST - Ridiculously Unable Social Tribe?
    RUST - Raunchily Unstable and Seriously Troubled?
    RUST - Rash Under Smelly Toes (Someone else's idea.
  • by gavron ( 1300111 ) on Tuesday February 14, 2023 @06:09PM (#63293411)

    ...and if you ask a bunch of first graders what their favorite class is, it's "recess."

    Rust is the most loved among unemployed diddlers,, and students.

  • Always wanted to try it, but have no interest making some command line program I will run once and utterly forget that it exists.
  • Many such crashes, Hoare knew, are due to problems with how a program uses memory. The software inside devices like elevators is often written in languages like C++ or C, which are famous for allowing programmers to write code that runs very quickly and is quite compact. The problem is those languages also make it easy to accidentally introduce memory bugs -- errors that will cause a crash.

    ...Making memory errors a thing of the past?

    • Comment removed (Score:5, Interesting)

      by account_deleted ( 4530225 ) on Tuesday February 14, 2023 @06:30PM (#63293459)
      Comment removed based on user account deletion
      • by short ( 66530 )
        There exists at least one non-stopping Java GC - Azul Prime C4 [azul.com] - unfortunately it is proprietary.
      • Java, on the other hand, lets programs allocate objects until the memory space is full. Once it fills, the run time will literally go through the entire stack and follow every pointer until it knows what's being used and what isn't.
        That was 30 years ago.
        No modern VM does that, unless you force it by command line options to do so.

        Seriously? (* facepalm *)

        but it takes time and means that Java programs [...] will pause for a time while that happens. And exactly is: why no Java VM is doing "stop the world" ga

        • And exactly is: why no Java VM is doing "stop the world" garbage collection since DECADES!

          What you've written is absolute nonsense.

          CMS had to STW during certain stages and G1 has to STW during certain stages. I don't think there's a GC that doesn't pause threads.

          The difference is that G1 is tuned to use a lot of resources (cores and memory) to quickly shred through short sections of GC so that it's less noticeable.

          G1 collects less garbage, more often, using more resources, but it still has to STW. FFS, it's in the first paragraph of G1's documentation:

          G1 is a generational, incremental, parallel, mostly concurrent, stop-the-world, and evacuating garbage collector which monitors pause-time goals in each of the stop-the-world pauses.

          In other words, sit down.

        • Comment removed based on user account deletion
          • garbage collector is based upon the concept of doing a sweep to see what memory is still in use.
            I was not talking about "the sweep" but about "stop the world".

            There's no other way to do it, you can't write a VM for Java that can dynamically remove any objects from memory and free it for reallocation because Java doesn't impose the same sorts of restrictions that Rust does.
            It does. And it can be done. Plenty of research VMs do that.

            And thee plenty of other ways you did not cover yet to do GC.

            E.g. concurrent

            • E.g. concurrent mark and sweep, opps: no the stop the wold involved.

              What? CMS absolutely does STW. Twice in fact, during a collection cycle, at phase 1 and phase 3. These pauses should be very short, but that depends on the characteristics of your application and the platform it's running on. CMS is deprecated (in fact, removed now) in Oracle JVM in favour of G1 for too many reasons to go into here. Suffice to say, CMS is not a silver bullet and does not guarantee no STW events.

              There is simply no way to do GC without stopping threads. Different algorithms can be used to mit

              • There is simply no way to do GC without stopping threads.
                A thread != all threads.

                Only true RT GCs can guarantee GC response times, and even then they must stop threads, albeit limited to a few tens of microseconds.
                No. They do not need to stop threads. That is absolutely not how it works.
                The GC is build into the memory allocation process. You could say: while the thread is performing its new() operation, it does not anything else, and hence is behaving like it is stopped. If you want to nitpick.

    • Re: (Score:1, Redundant)

      by istartedi ( 132515 )

      Yes, but Java took the ol' p-code approach of Pascal and came with a virtual machine (at least initially) that slowed things down. It used GC too. It was also designed as an OOP language with exceptions, classes, etc. which causes your program to have a heavy emphasis on the taxonomy of types, and turns out to be less useful for code-reuse than was originally thought. Later Java ditched the VM and went to a more traditional compilation model, but the OOP baggage is still there.

      Rust is compiled to your t

    • by Curupira ( 1899458 ) on Tuesday February 14, 2023 @06:33PM (#63293475)
      Sure. But Java's (also used in C#, Go, Python, Javascript and many other modern programming languages) solution, namely Garbage Collection (GC) introduces a non-negligible overhead.

      For things like scripting languages, frontend applications, GC is an excellent trade-off because the added security trumps the performance loss. But for use cases that require raw performance, GC doesn't cut it, so C and C++ are still widely used to build operating systems, device drivers, and web browsers (which must run web applications with acceptable performance).

      Rust is, I think, the first programming language that started to change this status quo, because even with its memory safeguards (which are not like Garbage Collection at all), Rust can compete with C and C++ on performance.
      • I've long been a fan of writing business logic in safe / higher-level / possibly slower languages, and then rewriting just the parts that need top performance in a lower-level language. In the past I'd have said C or assembly. Now I'd consider Rust as well.
    • The whole point of Java, which everyone seems to have forgotten, was to run untrusted code downloaded over a network.

      (It was also the one thing it was never very good at.)

      • Somehow JavaScript ended up inheriting that role.

        • by lsllll ( 830002 )
          Wait, you mean all this time I've not been programming Java in the browser and been calling myself a Java programmer?
      • I seem to remember the catchphrase as "write once, run anywhere". Although these days it's mostly just regular app development and deployment. Thank god the Java browser plugins are long since dead, at least for consumers. Nasty shit, that...

      • The whole point of Java, which everyone seems to have forgotten, was to run untrusted code downloaded over a network.

        (It was also the one thing it was never very good at.)

        And long before that, it was supposed to be the first high level code that executed natively on specially-designed CPUs. But it wasn't very good at that, so they looked for another use case.

      • Comment removed based on user account deletion
        • That was never the whole point of Java.

          Java was originally called Oak, and it was designed for set-top boxes. This is why it had the theorem-proving class loader and SecurityManager.

  • Programs don't crash, they just terminate because there was an unhandled exception. That's true for Rust, Java, everything, and also true for C. You can catch page faults. Elevators probably use a simple microcontroller that was programmed in assembly to something that barely comfirms to C.

  • Why Rust? (Score:5, Funny)

    by gillbates ( 106458 ) on Tuesday February 14, 2023 @07:12PM (#63293545) Homepage Journal
    • If your brother has anything against using C++, program in Rust instead, where your inability to keep track of memory will not expose your inferior coding skills.
    • You have heard it said, "check your pointers before dereferencing," but I say to you, don't use pointers at all. For if you cannot write a buffer overflow with only an array, you are hardly a programmer.
    • You have heard it said, "goto is considered harmful," but I say structured programming is overrated; for if you cannot use enclosures, your days as a programmer are few and fraught with peril.
    • It was said to your ancestors, "free your allocated memory," but I say woe to him who doesn't use a garbage collected language. For the programmers of yore could use good design to eliminate memory leaks, but thou is hardly a programmer of the olden way. Let the hobbyist perform thine good design, and you skip design to get to the debugging phase faster. For if you do not show forward momentum, thou art lost at review time.
    • You have heard it said, "throw an exception when something goes wrong," but I say to you that you must neither throw exceptions nor handle error conditions at all; for your API users will neither catch the exceptions you throw nor will they care; they will just blame you when their program unexpectedly crashes.
    • And finally, do not cast your Perl one-liners before swine, for they will mistake it for line noise and delete it without understanding it. And then blame you when the quarterly reports do not run without crashing.
    • If people other than you are brave enough to touch your perl one-liners, you're just not very good at writing them ;)

      The desired result of outside observation of one of those is "i don't know what the fuck that is, or does, but it's not noise, and i'm not touching it"
      • by xanthos ( 73578 )

        outside observation

        Gotta be careful of that with perl. The Heisenberg uncertainty principle come into play due to perl's relationship with the universe [xkcd.com]

    • Is this Rev Manul Laphroaig? Seems familiar.

  • Hyperbole (Score:2, Insightful)

    by iwbcman ( 603788 )

    "There are 2.8 million coders writing in Rust"

    number pulled straight from someones ass, likely to be a 10-fold overestimation.

  • Sorry, that given that it's in every copy of MS office, it's likely still the most popular language.
  • Nice scapegoat. MS problem is not C and C++, but bad organisation. Your code reflects your organisation. Make the latter inefficient and your code will not have a chance to be good. I hope one day, that I would not be forced to use anything from MS.
  • I though it was supposed to be popular? Funny, I just finished another long stint working in an ancient Czech scripting language with necessary goto statements, and now I'm working in Python and realizing that I really don't feel relieved. How the hell did this mess get popular at all?

    • by gweihir ( 88907 )

      I would suggest the problem is with you. Python is pretty good. It is just not a language for the low-skilled.

      • by nagora ( 177841 )

        I would suggest the problem is with you.

        No, I don't think so.

        Python is pretty good.

        No, I don't think so.

        It is just not a language for the low-skilled.

        That's true - its a language created BY the low-skilled.

        • by gweihir ( 88907 )

          Pretty much what one of the arroganter of my lower skill students would say. It is clear Python is not for you. But that does not make it a bad language at all.

          • by nagora ( 177841 )

            Pretty much what one of the arroganter of my lower skill students would say. It is clear Python is not for you. But that does not make it a bad language at all.

            I agree. That's certainly not what makes it a bad language.

  • Also, only the fanatics love it. The rest does not care and hence does not show up in these made-up statistics. I have heard pretty bad things about it from people that credibly had a neutral stance before looking at it.

    • I started using Rust a few years back. I used it to build an experimental library to do something that was only served by a Java library at the time, and I wanted something faster and more memory efficient. I did some digging, quite like the sound of Rust, so gave it a go. The project is still going, I have some other folks adding to it now, people building extensions and it is in production use.

      Overall, my experience is that the Rust is nice enough to use and it is indeed faster and more memory efficient.

  • Personal Home Page Tools started?

  • ... whatever that's even supposed to mean.

    And classifying it as a side-project is just as wrong.

    The Firefox/Mozilla Team wanted to rewrite their DOM renderer/compositor fast and clean and figures that any variant of the C-family wouldn't cut it and they might as well just implement a new system language. They did some key things right and the world sighed in relief that finally someone built a non-proprietary system language that fits modern requirements and doesn't suck golf balls through garden hoses.

    Rust

Love may laugh at locksmiths, but he has a profound respect for money bags. -- Sidney Paternoster, "The Folly of the Wise"

Working...