Very excited about this release.
This is the first major release after 0.1.
The focus has been on stability and compile-time memory management. The demo of that was posted here recently [0].
7600 commits, 4110 handled pull requests, 340 contributors, 20k GitHub stars. What a journey!
Do you have any plans to resume working on Volt (the original V app)? I thought the idea behind it was great, but there hasn't been an update in 1.5 years.
Though I guess "VLang" works.
Also garbage collection. What are you doing for that? ARC?
For some context here’s the last of a series of posts examining some of Vs claims https://christine.website/blog/vlang-update-2020-06-17
My personal conclusion from my reading was - if you wish to go use V, go ahead, but I'd exercise caution when relying on anything about it.
[1]: https://twitter.com/v_language/status/1234586123424456705
[2]: https://github.com/vlang/v/blob/bc288019932c35cc09dcf7b438bc...
[3]: https://github.com/vlang/v/tree/bc288019932c35cc09dcf7b438bc...
> Git is a dependency, which means perl is a dependency, which means a shell is a dependency, which means glibc is a dependency, which means that a lot of other things (including posix threads) are also dependencies. Pedantically, you could even go as far as saying that you could count the Linux kernel, the processor being used and the like as dependencies, but that's a bit out of scope for this.
What's the point of such nitpicking? You don't need git to use V, and the point of the no dependency claim is that bootstrapping V is as simple as `cc v.c` and the V compiler produces single file binaries, that are easy to deploy, without any dependencies on an interpreter/environment/libs etc.
I'm actually going to write a post debunking all of the claims in these articles, since I see them mentioned quite often (including measuring the compilation speed by using an unoptimized debug build + running vfmt + rebuilding the standard library with each compilation + using a 2x slower backend).
Disclaimer: I don't know V authors nor I'm part of V community.
> Good question. I haven't mentioned memory management because it's not done yet. I know for sure there won't be a GC or reference counting. [0]
> What I mean is `a = sort(a)` will be optimized to `sort(&a)` which can mutate internally. [1]
Do look at the entire threads - I don't think the claims are too out of context as quoted.
There is no controversy but the one you are trying to build up. This language is obvious quite young in development, isn't backed by mega corp Z with billions of $ at its disposal, yet it is trying to manage to find a solution to multiple issues Go couldn't even resolve in 10+ years. cut it some slacks.
I remember eC [1, 2] from Ecere being one such example of an “exciting new C”: it had traditional class-based OO, no header files (!), cross platform, reflection, etc etc etc. It came with a huge runtime library with tons of demos. It started 16 years ago (!!). There’s of course D as well (which is more often pitched as a C++ replacement), and its own Walter Bright frequently seen around here, and some companies use it, but it hasn’t truly exploded into mainstream use.
Can interested folks (or the author) comment? Are you bored and want a fun new take on programming? Or are you truly, in practice, extremely dissatisfied with the current marketplace of C alternatives and V actually is a take that “gets things right”?
[1] https://en.m.wikipedia.org/wiki/EC_(programming_language)
I think the reason is something else: It's not the demand that's amazing, it's the supply.
A lot of people like making languages, and full working environments to go with them. It's fun! If you're into that sort of thing, it might be the most attractive kind of project, with a kind of geek gravity that draws you in when you've got the bug.
A new language and its environment is an interesting exercise, even if it takes years. It's something to do to hone your craft. It's not particularly difficult, if you go for it, it just takes time. You can add all those ideas you wish other languages had but never do. Probably if you're into making languages you have a lot of ideas like that.
There's lots of interesting things to learn, lots of puzzles to solve, and then you have an artifact at the end which other people can appreciate. They might even find it useful, which is another reward, another bit of satisfaction.
If that's a major reason for new languages, why C-like?
I think C-like hits a design sweet-spot that is easy to understand and easy to branch out from. But it's also something you know other people are likely to understand and appreciate. It's not too exotic, at least at first glance. With so much supply and a lot less demand, you want your language to be noticed, to be useful and seen as useful. Being C-like boosts chances of acceptance as a language to take that bit more seriously.
I company I worked for a very long time ago wrote a hardware compiler, with a front-end language for hardware called Handel which was a DSL in Standard ML (great language. ML. by the way).
It was used, but it got more popular when they wrote a C-like front end and called it Handel-C. There was no real difference to the language, and Handel-C was in many ways less powerful (because there was no ML with which to manipulate the syntax tree), but the C-like syntax made it a look familiar, and therefore marketable.
Developers won't stop creating languages until something that really succeed in replacing C is created.
Nothing wrong with that.
Would be nice if you would credit it, though.
- https://github.com/nim-lang/RFCs/issues/178
- https://nim-lang.org/docs/manual_experimental.html#view-type...
- No null
- No err != nil checks (replaced by option types)
- Immutability by default
- Generics
- Sum types (type Expr = IfExpr | StringLiteral | IntLiteral )
- If and match expressions (including sum type matches)
This might be my personal project goto language for 2021.
As in ‘considered harmful’?
I’m staying away from any language with vulnerabilities like these: https://christine.website/blog/OVE-20190623-0001
It's great to see that it's not s hoax, and it starts to somehow flesh out.
Would disagree with "nothing to show for them" though.
The V compiler was written in V from the start at the time of the release, which already shows the maturity of the language, and it did compile itself in less than a second. Bootstrapping it has always been as simple as `cc v.c`. It had a graphics library from the start with a working Tetris game example, hot code reloading, etc
It was definitely rough around the edges due to being a one man project, so it's good that it received help from hundreds of contributors. It's much more stable now.
At the moment its still incomplete. And this is the most interesting part of the whole language. ARC, weak refs, autofree also working together needs to be done, only then will this language be of weight. Garbage collection is a difficult problem to be fair and it definitely determines the performance of many languages. Not to mention multi-threaded GC is difficult. I am excited to see how the author pulls this one through. See you again with V 0.3. Till then best of luck!
Here is Tetris in V:
https://github.com/vlang/v/blob/master/examples/tetris/tetri...
> Pure functions by default
but all this means by their definition is: no global mutable variables, sort of, because you can enable them per compiler flag.
darkstar$ ../../v run tetris.v
Compilation with tcc failed. Retrying with cc ...
ATTENTION: default value of option vblank_mode overridden by environment.
gg error: GLX: failed to create GL context
Terminated by signal 6 (SIGABRT)
Graphics:
Device-1: AMD RS690M [Radeon Xpress 1200/1250/1270] driver: radeon
v: kernel
Display: server: X.Org 1.18.3 driver: radeon resolution: 1680x1050~61Hz
OpenGL: renderer: Gallium 0.4 on ATI RS690 v: 2.1 Mesa 13.0.6Maybe this project had a rough start, but right now anyone claiming this is not real should probably re-evaluate those feelings.
P.S. This language looks amazing
[edit] Sorry, edited before there was a reply. You're very fast!
it implies the presence of other nice-to-haves, like ergonomic struct iteration and linting against schema
and it gracefully enables low-code API frameworks if you can annotate RBAC + visibility rules