Rust Programming Language Reaches 1.0 Alpha
c0d3g33k writes: Rust, a new a systems programming language with a focus on safety, performance and concurrency, has released the 1.0 alpha version of the language. This means that the language and core libraries are feature-complete for the 1.0 release. In practical terms, this means that the rate of change experienced by early adopters will slow down dramatically and major breaking changes should be very rare (during the alpha cycle some major changes may still occur if considered necessary). The language will stabilize further when the beta stage is reached (planned for six weeks from now).
I'm a bit Rusty on the subject. Pardon?
I always heard that Rust was like a 3D printed gun. Nifty, if they can ever get it to work.
Rust's raison d'etre is fast but safe programming. It seeks to achieve this by expanding the type system with the different pointer types owned, borrowed, and garbage collected, as well as explicitly unsafe sections of code.
Rust does not however attempt to address array length issues via such type level mechanisms. Instead, they use compile time lengths for arrays and offer for slices for arrays with run-time lengths. That's okay, but it ignores swaths of optimizations.
Ideally, you want a fully dependently typed language like Idris for this because dependent types let you tell the compiler to prove at compile time that two arrays must have the same size.
Idris itself is a research language that doesn't currently worry about speed, but one research topic they're exploring is uniqueness types, which hopefully should provide the "right" abstraction for Rust's pointer types.
Anyways, I sincerely hope that Rust eventually kills off the dumb C style languages like Go, but it's not the last word on fast but safe programming.
After a quick look at the language, it's certainly not something I'd use for safety. I'll stay with Ada, thank you.
The static charge crackling for a second or two when switching on or off a CRT Television with tubes instead of solid-state circuitry.
Rust? Programmers often choose self-defeating names. Imagine going to a top manager and saying you want to program a product in Rust.
What are some of the others? Gimp is one. GNU. LaTeX is written in both English and Greek letters. There is nothing "regular" about Regular Expressions.
NetLoony Apache Server GUI and Tools. (Looney is someone who is "Extremely foolish or silly".)
pGina
Bouncy Castle cryptography
Pick 2.
Some drink at the fountain of knowledge. Others just gargle.
I'll just wait until next week, when the much more stable version 27.0 comes out.
Just the other day I was remarking how few programming languages there are.
A safety systems programming language sounds great but they had to ruin it by putting a garbage collector in it. This makes it useless for systems programming.
Ok, if this is a systems programming language, where is the first RTOS kernel with all the necessary lowlevel bits and pieces to getting it running on a modest modren 32-bit MCU ? Say, any Cortex-M3 ? Device drivers for basics, register access ?
Because, it would be awesome to have all these theoretical safety guarantees and stuff, while programming hardware.
Is there even a cross-compiler ?
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.slashdot.org Errors found while checking this document as HTML5!
It's about time we finally have a language that meets all of our needs, now we don't need so many different languages.
A safety systems programming language sounds great but they had to ruin it by putting a garbage collector in it. This makes it useless for systems programming.
No they didn't: http://doc.rust-lang.org/compl...
... just what the world needs.
I have been using rust during development and eagerly awaited this release. Please be warned, however, that rust has a steeper learning curve than most languages, and be especially warned that the language has been changing faster than the documentation can keep up during the push towards alpha. Last I checked, even things as core as the names of the integer types differ between the documentation and the implementation. I want people to get excited about the language, but I don't want anyone to get an unnecessarily bad initial impression!
I'm not completely sold on the syntax, but I find the design and runtime interesting. I'd like to find an excuse to build something with it, to see if it can live up to its potential.
I started thinking about how I would design a language recently, then I came across rust, and I saw quite a lot of the same conclusions I came to myself. Abstract classes, multiple inheritance, Interfaces with versioning, combining 3rd party libraries... With rust, you define the layout of memory without inheritance, and the implementation of interfaces for types without defining the layout of memory. Neatly side-stepping some of the issues faced by other languages.
All resources and object lifetimes are managed, avoiding .NET's IDisposable. You can combine structures together, which can exist exclusively on the stack, avoiding the "everything is an object on the heap" problem that Java seems to fall into.
Since there's no NULL, there's no NullPointerException. There's no unchecked exceptions, or any exceptions at all for that matter. Though, I might prefer to have them. Sure, there's the try! macro. But that's just syntactic sugar for checking the return code of every function.
09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
Frist of all it does not rely on GC and secondly: why should that be an issue for system programming?
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
From your link:
How many good OO language exist without constructors? Maybe only javascript. This seems like a terrible decision.
I want people to get excited about the language, but I don't want anyone to get an unnecessarily bad initial impression!
They're not going to do that if the devs can't even bother to keep the documentation up-to-date. It's absolutely critical to the health of a project that the documentation both exist and be correct. Until that happens, people are going to take the "effort" for what it is, an unprofessional joke. At least C++ is professional comedy.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
It's called "Swift."*
*Not to be confused with The Swift Parallel Scripting Language.
I agree. I've gone through the guide twice in the past and both times I ran into several example code snippits that failed to actually compile/run.
That combined with the ugly syntax I think the language is a joke. I'll stick with Haskell.
The documentation will be great in short order; the doc writer has been doing a great job. The stuff I am talking about was changed literally only a few days ago.
From your link:
How many good OO language exist without constructors? Maybe only javascript. This seems like a terrible decision.
Or maybe an informed one. Go and Rust -- objects without class
Besides, Rust isn't an "OO" language. It's a multi-paradigm language that supports pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles. After 40+ years, a growing opinion seems to be that pure OOP isn't without its problems, and other approaches may fit development goals better. I'm not sure multi-paradigm languages are the answer (there seems to be a huge potential to be confusing, IMHO), but OOP isn't the evolutionary pinnacle of language design that the last few decades of hype would have us believe. I'm willing to give this approach a chance (and I'm always up for learning something new).
Critcisim of the OOP paradigm
(Aside: Not quite sure why, but the use of the term "paradigm" multiple times makes me feel slightly icky for some reason. Probably due to it's misuse in business jargon.)
Objective-C and Smalltalk also don't have constructors in the language, they merely have them as conventions in the standard libraries, which are adopted by most third-party code. There's no reason for constructors to be special, they're just methods that initialise the object and return a pointer / reference to it, and which (by API contract) may have undefined behaviour if used on an already initialised object.
I am TheRaven on Soylent News
That's a rather uninformed statement to make, given that you're referring to a rather short time period when the rate of change caused the docs to lag behind. That will be corrected soon, I'm sure. Besides, the API docs, which are generated from the code, *are* correct and have been kept up to date all along despite the rapid rate of change. So documentation exists and is correct. The GP was likely referring to the higher level docs, such as guides and tutorials, which aren't produced by "the devs".
But hey, at least you got your *zing* in, though you forgot the rimshot at the end.
Some people think that a garbage collector for all code is a good thing. They're morons.
The "guide" and the "guides", recently merged into "the book", actually are professionally maintained by a Mozilla employee, who is doing a great job but is of course outnumbered by the rest of the devs making language changes. Among other things, "alpha" is a chance for him, not to mention writers of external libraries, to get fully caught up with the development branch before beta and eventually 1.0.
The worst criticism IMO from your link is the "study by Potok et al. has shown no significant difference in productivity between OOP and procedural approaches." That's really depressing.
"First they came for the slanderers and i said nothing."
(Aside: Not quite sure why, but the use of the term "paradigm" multiple times makes me feel slightly icky for some reason. Probably due to it's misuse in business jargon.)
Probably because there's no reason to use such an awkward word in the first place. In this case, notice how you fall into using "style" instead? Also, the vast majority of time, when people use "paradigm", they could replace it with the much more common and simpler word "model" or another simpler term.
Thanks. I was going to mention that there was a dedicated person (Steve Klabnik is his name, BTW - http://www.steveklabnik.com/) who was doing a great job and has just been momentarily overwhelmed. I decided it sounded too much like an excuse that "drinkypoo" wouldn't find convincing, given that "drinkypoo" (*snicker*) clearly has high standards of professionalism. So I decided to mention the API docs instead, which have been most helpful when sorting out code breakage due a change in the nightly version of the compiler. Actually, much of the time, the extremely clear error messages emitted by the compiler have been enough to make the correct changes to fix errors, which is almost better than good documentation. The latter is more useful in understanding why the code was incorrect, even if the compiler message is often enough to correct the problem.
(Aside: Not quite sure why, but the use of the term "paradigm" multiple times makes me feel slightly icky for some reason. Probably due to it's misuse in business jargon.)
Probably because there's no reason to use such an awkward word in the first place. In this case, notice how you fall into using "style" instead? Also, the vast majority of time, when people use "paradigm", they could replace it with the much more common and simpler word "model" or another simpler term.
Actually I looked it up and based on the definition of the word ("a distinct concept or thought pattern"), its use in the given context seemed appropriate, so I kept it in. "Style" seems to imply something more arbitrary, while "model" is a way of describing reality using simplified concepts (or a plastic thing I used to build as a boy, or something I found appealing as a teenager). Paradigm seems right.
And yet you instinctively fell into "style" later on, and nothing was lost by using that word. Instead, you gained in clarity of communication. You could also say "model" and it would have the same meaning. "Paradigm" is a fancy buzzword.
You're being pedantic. (And I'm about to follow suit.) Paradigm *isn't* a fancy buzzword - it is a word with a clear definition that has been in use since the 15th century. It's fame as a buzzword comes from imprecise overuse during the last decade or so. The word itself is fine.
Here's another definition, this time from Merriam-Webster: "a theory or a group of ideas about how something should be done, made, or thought about". That seems to fit the discussion pretty well when referring to different ways to approach the decidely non-trivial task of defining at a fundamental and conceptual level how a programming language works.
You mention "style". I don't think it's really equivalent to paradigm, though it could apply to variations of a paradigm. Style involves the details in how you implement a paradigm - it's not a paradigm itself. Merriam-Webster supports this assertion: "a particular form or design of something" and "a particular way in which something is done, created, or performed" (emphasis mine).
But I grow tired of this nitpicky exercise. You may have the last word if you wish (preferably with concrete examples of why you believe you are correct rather than vague generalizations and unfounded assertions regarding awkwardness and clarity). I've said my piece and I'm done with this. Good day.
You're being pedantic.
I'm not. It's a garbage word. There are plenty of garbage words that stick around for no reason other than that people like to use them in place of simpler words.
You mention "style".
You used the word. Why did you use it? Because it's simpler and conversational and came naturally to you. People don't generally go around using the word paradigm.
I also used the word "model". Try this: The object-oriented programming model. Gee, does that not get the point across?
And there's nothing vague about simpler words and more common words versus less common words that have come into vogue. Nobody needs a clarification when you use those simpler words. I'm willing to bet at one point you said, "What the fuck's a paradigm?"
It's a multi-paradigm language that supports pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles.
But it doesn't support modern object-oriented style, if it lacks constructors.
After 40+ years, a growing opinion seems to be that pure OOP isn't without its problems
It's not a "growing opinion", it's a bald truth, but RAII is not one of OOP's problems, it's one of OOP's greatest contributions. Language designers can't just ignore it because it makes their compiler simpler. It's not their job to make the compiler simpler, it's their job to make the language useful.
Two things that should never be in a software version together: "1.0" and "alpha". You're either a 1.0 and ready, or not.