894 karma · joined October 9, 2013
[0]: https://github.com/rust-lang/rust/pull/35764
[1]: https://github.com/rust-lang/rust/issues/34511
[2]: http://manishearth.github.io/blog/2016/08/18/gc-support-in-r...
fn next<'i>(&'i mut self) -> Option<Vec<&'a T>>
which, thanks to lifetime elision, is the same as fn next(&mut self) -> Option<Vec<&'a T>>There are robots everywhere: for example, the Rust's github repos won't work the same without bors or highfive.
If I remember correctly, the github itself definitely used to allow robots for such use cases.
Great tooling: Libraries can be written, published and used quickly. Code can be easily rebuilt on upcoming Rust versions without uninstalling anything. Integrated testing and documentation generation. Cross-compilation.
Truly cross-platform. As an example, Rust even supports both GNU and MSVC targets on Windows, that means Rust libraries can be linked into the C++ projects compiled with MINGW or MSVC. All the standard library features are cross-platform, unless namespaced otherwise.
Rust linear type system requires variables be either uniquely mutable or immutable, but not both. This solves whole class of resource management problems (memory being the most important) in the simplest possible way. This compile-time guarantee also works for all references to data, which become thin pointers at runtime. This, together with Send-able and Sync-able types, also ensures no data races.
Language is up-to-date. No-nulls, pattern matching, closures, generics, attributes will feel familiar to programmers coming from various languages. Language had many iterations and changes, and every bit of it was designed with care. Right now it may be a bit explicit, but sugar can always be added later if it appears worth it.
Stable release cycle, stability guarantee. We know when new beta will be renamed to stable and we know what's in it! That means there is time to check all ecosystem for possible breakage, even though historically Rust introduced hardly any breaking changes since 1.0 a year ago.
To err is to be human, but compilers never forget.
The problem here is actually is an old one of failing to separate a getter from a command.
It looks like ConjureMagic is causing side effects and modifying the state of whatever class it belongs to.
This is also the reason one can't answer the question "what the heck is a?". If the "ConjureMagic" is only a getter and does not modify class state, it may probably need a better name, like "GetMaxMagicPossible". That renders an auto no longer confusing, because this name explains more than the return type. If, on the other hand this is just a command to conjure the magic and we are getting the remaining amount only to immediately pass it to the member "SetMagic" function, then there was no point in returning this value - it could be done inside the "ConjureMagic" itself.
- Require all contributors to specify their gender; - Do not allow new contributions if they exceed gender quota for release.
Good luck.
I like that in templates, string handling is _enforced_ to be different. For example, when you manipulate strings in template, you can be reasonably sure all output is escaped, unless you specify otherwise in a very few precise cases with explicit syntax.
A good template language allows you to create/limit available tools/helpers for your particular project. That is especially important in larger projects and larger teams, where everyone is not immediately expected to know intended good practice to follow. Creating DSL in template _is_ a way of documenting intended good practice.
A good template language does not pretend not to be turing-complete: instead, it provides comprehensive error handling and error messages, so that users know exactly where some error or type occurred.
One more reason to use the language is because it is a language. If someone used something like Django, the Twig will be quite familiar and easy to pick up.
Template engine can optimize-away, pre-compile things, just like languages do.
With separate template language you don't need to recompile whole build if you change a template (presuming hosting language is compiling to binary and template engine is interpreted).
Full disclosure: I am currently rewriting Twig in another language, and believe it's completely worth the effort.
Template language is useful not because it allows to do things, but because it limits what can be done.
Every framework should take note: that's how you avoid creating another framework and fragmenting community!
It's is great to see this in action :). Amazing work.
It sounds like this:
Rust is a systems programming language focused on three goals: safety, speed, and concurrency. It maintains these goals without having a garbage collector, making it a useful language for a number of use cases other languages aren’t good at: embedding in other languages, programs with specific space and time requirements, and writing low-level code, like device drivers and operating systems. It improves on current languages targeting this space by having a number of compile-time safety checks that produce no runtime overhead, while eliminating all data races. Rust also aims to achieve ‘zero-cost abstractions’ even though some of these abstractions feel like those of a high-level language. Even then, Rust still allows precise control like a low-level language would.
Except, um... PHP.
I guess there are many authors like me who don't even remember they are hosting something there - it would be sad to loose all that code.
I haven't finished reading the PDF [0] yet, but it looks like LLVM, but for hardware.
[0]: https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.pdf
It is also guaranteed by ownership system: in the safe mode (which is default) rust will statically (at compile time) ensures that a value can only be mutated at a single execution point. It is done by moving, instead of copying any value _by default_, unless it is wrapped in some kind of synchronization primitive or implements a _Copy_ trait.
Synchronization primitives themselves are implemented in unsafe mode, thus limiting the unsafe code scope and allowing custom unsafe code which can also be wrapped in safe interface.
Calling V8 "whatever monkey" is a bit ignorant.
Oh, I haven't said that JavaScript is a good language :)
I suspect that we will see more languages like Rust in future, because Rust has essentially proved the feasibility of the ownership model with working implementation.