mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
V 0.3
This commit is contained in:
parent
9f59dbd319
commit
ec75860453
98
CHANGELOG.md
98
CHANGELOG.md
@ -1,17 +1,100 @@
|
||||
-## V 0.2.5
|
||||
-*Not yet released, changelog is not full*
|
||||
## V 0.3
|
||||
*30 Jun 2022*
|
||||
- C to V translation via C2V: `v translate file.c`. (Demo video: [Translating DOOM from C to V, building it in under a second and running it!](https://www.youtube.com/watch?v=6oXrz3oRoEg))
|
||||
- Lots of bug fixes in V, cgen, and C interop to allow running translated DOOM.v.
|
||||
- Programs built with the V compiler no longer leak memory by default.
|
||||
- Closures. All operating systems are supported. ([Demo](https://twitter.com/v_language/status/1528710491882852352))
|
||||
- `Option` and `Result` are now separate types: `?Foo` and `!Foo` respectively. Old code will continue working for 1 year and will result in a warning/hint.
|
||||
- Hundreds of new checks in the type checker.
|
||||
- All V's backends have been split up into separate processes. As the result, building V got 26% faster.
|
||||
- Maps and arrays can now return optionals: `m[bad_key] or { ... }`, `if x := arr[key] { ... }`.
|
||||
- `ustring` has been replaced with `[]rune` (works just like in Go).
|
||||
- Maps can now have non-string keys.
|
||||
- A new compiler pass for transforming the AST (doesn't slow the compiler too much, adds about 25ms to `v self`). It eliminates unreachable branches and performs other simple optimizations and transformations.
|
||||
- C backend is now parallel (just the cgen part for now).
|
||||
- Lots of compiler source code clean up and minor optimizations. The compiler got ~30% faster according to fast.vlang.io.
|
||||
- Better compiler source code organization (absolutely necessary as it's surpassed 100k loc).
|
||||
- The naming of V's integer types is now more consistent: `byte` has been renamed to `u8`. Old code will continue working for 1 year and will result in a warning/hint.
|
||||
- The typo detector now highlights the suggested name so that it's more visible.
|
||||
- `datatypes` module now has `Heap, Queue, Stack, BSTree, LinkedList`.
|
||||
- Interfaces can now be embedded (like structs).
|
||||
- vlib now has a TOML parser, fully compatible with TOML 1.0.
|
||||
- Lots of work done on the V.js backend, including the graphics library, which has been ported to V.js.
|
||||
- JS promises, await (V.js).
|
||||
- It's now possible to do more complex array initialization by using each individual element of the array (`[]int{init: it}`).
|
||||
- Unsigned right shift operators `>>>` and `>>>=` have been added to V. (They work exactly like in Java.)
|
||||
- `-nofloat` option, which is useful for writing kernels and for embedded systems without an FPU (used in Vinix).
|
||||
- Generic interfaces.
|
||||
- TCC is now bundled with the language, this allows building V programs without an external C compiler dependency.
|
||||
- Null can be used in `unsafe` only (for example, for C interop).
|
||||
- Pointer arithmetics and comparing pointers to numbers is now also only allowed in `unsafe`.
|
||||
- Inline sumtypes.
|
||||
- New module `compress.gzip`.
|
||||
- Lots of `net`/`net.http`/`vweb` fixes (also used for the upcoming Gitly launch).
|
||||
- IPv6 support.
|
||||
- `net.http` headers are now enum fields instead of strings. This allows to avoid typos and offers autocomplete.
|
||||
- Struct field deprecation.
|
||||
- Static GC (no longer a dynamic lib dependency).
|
||||
- New various algorithms for random number generation: MT19937RNG, etc (module `rand`).
|
||||
- Fix immutability bugs that allowed to bypass compiler immutability checks and modify const/immutable values.
|
||||
- Lots of fixes in the JSON serializer.
|
||||
- Heap allocated only structs marked with `[heap]`.
|
||||
- Significantly improve lots of error messages, make them more clear, suggest hints.
|
||||
- Bug fixes and new features in the pure V `regex` module.
|
||||
- Lots of new drawing functions in the graphics module (like `gg.draw_polygon_filled(), gg.draw_arc_empty()` etc)
|
||||
- Builtin FPS display in `gg`.
|
||||
- Latest Sokol backend in `gg`.
|
||||
- Advanced CI tests for the graphics module. Graphical apps are run on GitHub Actions instances, their output is saved to an image, uploaded, and compared to the expected result.
|
||||
- More bug fixes in generics.
|
||||
- Bug fixes in aliases. They can now fully replace the types they alias.
|
||||
- `[minify] struct attribute for struct minification.
|
||||
- `for in` now works with fixed arrays.
|
||||
- The parser was made a bit faster by skipping `vfmt` code when not in `vfmt` mode (by using `-d vfmt`).
|
||||
- Lots of vfmt improvements, especially with comments.
|
||||
- Experimental `#[index]` syntax for negative indexing (like in Python, but needs special syntax instead of being used by default).
|
||||
- Visibility bug fixes in modules (`pub`).
|
||||
- Error propagation in complex expressions (e.g. `foo(bar()?)`).
|
||||
- Optionals can now by used in consts (`const x := opt() or {}`).
|
||||
- Lots of new documentation, including vlib modules documentation and the official V Documentation.
|
||||
- vpm improvements (including a new vpm mirror).
|
||||
- `sync` improvements including `sync.thread_id()`, `sync.Once`..
|
||||
- V can now be used to generate object files (`foo.o`) that can be used in existing C projects.
|
||||
- `-usecache` and `-skip-unused` fixes, they are close to being on by default.
|
||||
- Lots of Windows issues fixed.
|
||||
- Amazon Linux support.
|
||||
- Fixes in shared maps and arrays.
|
||||
- `term.ui` improvements, including multi byte/UTF-8 events.
|
||||
- New `crypto` modules, including `crypto.des, crypto.cipher, crypto.blowfish`.
|
||||
- Comptime fixes.
|
||||
- 4 byte bool option (`-d 4bytebool`) for compatibility with some C software.
|
||||
- `strconv` (pure V formatting module used in string interpolation) fixes and performance improvements.
|
||||
- ORM fixes (pg, mysql, sqlite). Tables are now created automatically based on the V structs, no more need in sql files to create tables for apps.
|
||||
- `volatile` keyword.
|
||||
- `"stringliteral".len` optimization (replaced by the actual number by the new `transform` pass).
|
||||
- Lots of inline assembler improvements (it's used a lot in Vinix).
|
||||
- Many new functions in the `math` module.
|
||||
- Separators in number literals: `1_000_000`.
|
||||
- `strings.Builder` optimizations and new methods.
|
||||
- Autofree fixes (still not production ready, hidden behind the `-autofree` flag).
|
||||
- Lots of Android fixes in V and in vab.
|
||||
- Lots of commits to the native backend (amd64/arm64).
|
||||
- V interpreter fixes. (Still at an early stage.)
|
||||
- Go2V translator has been started by the community, and can already translate simple programs.
|
||||
- An early version of the Go backend (`v -b go -o file.go file.v`).
|
||||
|
||||
|
||||
-## V 0.2.4
|
||||
*30 Aug 2021*
|
||||
- Introduce `isize` and `usize` types, deprecate `size_t` in favor of `usize`.
|
||||
- Add `datatypes` and `datatypes.fsm` modules.
|
||||
- Add `compile_error` and `compile_warn` comptime functions.
|
||||
|
||||
-## V 0.2.4
|
||||
-*Not yet released, changelog is not full*
|
||||
- Bare metal support. Vinix OS kernel is now being developed in V.
|
||||
- Builtin web framework vweb is now multithreaded, all CPU cores are used.
|
||||
- String interpolation and struct stringers are now implemented in pure V
|
||||
with a much cleaner and faster implementation. Previously libc's `sprintf`
|
||||
was used.
|
||||
- Improved `unused variable` warning. Assigning to a variable no longer marks it as used.
|
||||
*... lots of missing changelog for this version, sorry (will update a bit later)*
|
||||
|
||||
## V 0.2.2 - 0.2.3
|
||||
*22 Jan 2021*
|
||||
@ -51,12 +134,11 @@ from local variables.
|
||||
|
||||
## V 0.2
|
||||
*22 Dec 2020*
|
||||
- Compile-time memory management via `-autofree`. [Video demonstration](https://www.youtube.com/watch?v=gmB8ea8uLsM).
|
||||
It will be enabled by default in 0.3
|
||||
- Compile-time memory management via `-autofree` (not production ready yet). [Video demonstration](https://www.youtube.com/watch?v=gmB8ea8uLsM).
|
||||
- Channels and locks.
|
||||
- Thread safe typed arrays via keyword `shared`.
|
||||
- Struct embedding.
|
||||
- IO streams.
|
||||
- IO streams (`io.Reader`, `io.Writer` etc).
|
||||
- A powerful websocket module that conforms to RFC 6455 and passes the Autobahn test suite (498 client tests and 249 server tests).
|
||||
- The `net` module is now non blocking and is more feature complete providing similar API to Go.
|
||||
- V's graphics module now uses Metal/DirectX/OpenGL instead of just OpenGL.
|
||||
|
25
ROADMAP.md
25
ROADMAP.md
@ -1,34 +1,13 @@
|
||||
## [Version 0.3](https://github.com/vlang/v/projects/5)
|
||||
- [ ] [make `-autofree` the default](https://github.com/vlang/v/issues/6989)
|
||||
- [x] [gc option]
|
||||
## [Version 0.4]
|
||||
- [ ] [coroutines](https://github.com/vlang/v/discussions/11582)
|
||||
- [x] channels
|
||||
- [x] lock{}
|
||||
- [x] thread safe arrays
|
||||
- [ ] [thread safe maps](https://github.com/vlang/v/discussions/11729)
|
||||
- [ ] [C2V translator](https://github.com/vlang/v/issues/6985)
|
||||
- [ ] doom.v
|
||||
- [x] rune type
|
||||
- [x] replace `ustring` with `[]rune`
|
||||
- [x] fix `byte.str()`
|
||||
- [x] maps with non-string keys
|
||||
- [x] iOS/Android support
|
||||
- [ ] parallel parser
|
||||
- [ ] parallel checker
|
||||
- [x] parallel cgen
|
||||
- [ ] parallel C compilation
|
||||
- [ ] `recover()` from panics
|
||||
- [x] IO streams
|
||||
- [x] struct embedding
|
||||
- [x] interface embedding
|
||||
- [x] interfaces: allow struct fields (not just methods)
|
||||
- [ ] vfmt: fix common errors automatically (make vars mutable and vice versa, add missing imports)
|
||||
- [ ] method expressions with an explicit receiver as the first argument
|
||||
- [x] short generics syntax (`foo(5)` instead of `foo<int>(5)`)
|
||||
- [ ] fix all remaining generics issues
|
||||
- [ ] merge v.c and v_win.c
|
||||
- [x] more advanced errors, not just `error('message')`
|
||||
- [ ] VLS for autocomplete, refactoring, go to definition etc
|
||||
- [ ] Recursive structs via optionals: `struct Node { next ?Node }`
|
||||
- [ ] Remove `foo = 0` for `&Foo`
|
||||
- [ ] Handle function pointers safely, remove `if function == 0 {`
|
||||
- [ ] Bundle openssl like GC
|
||||
|
2
v.mod
2
v.mod
@ -1,7 +1,7 @@
|
||||
Module {
|
||||
name: 'V'
|
||||
description: 'The V programming language.'
|
||||
version: '0.2.4'
|
||||
version: '0.3.0'
|
||||
license: 'MIT'
|
||||
repo_url: 'https://github.com/vlang/v'
|
||||
dependencies: []
|
||||
|
@ -2,7 +2,7 @@ module version
|
||||
|
||||
import os
|
||||
|
||||
pub const v_version = '0.2.4'
|
||||
pub const v_version = '0.3.0'
|
||||
|
||||
// vhash() returns the build string C.V_COMMIT_HASH . See cmd/tools/gen_vc.v .
|
||||
pub fn vhash() string {
|
||||
|
@ -8,7 +8,7 @@ fn test_ok() ? {
|
||||
ok_source := "Module {
|
||||
name: 'V'
|
||||
description: 'The V programming language.'
|
||||
version: '0.2.4'
|
||||
version: '0.3.0'
|
||||
license: 'MIT'
|
||||
repo_url: 'https://github.com/vlang/v'
|
||||
dependencies: []
|
||||
@ -18,7 +18,7 @@ fn test_ok() ? {
|
||||
content := vmod.decode(s)?
|
||||
assert content.name == 'V'
|
||||
assert content.description == 'The V programming language.'
|
||||
assert content.version == '0.2.4'
|
||||
assert content.version == '0.3.0'
|
||||
assert content.license == 'MIT'
|
||||
assert content.repo_url == 'https://github.com/vlang/v'
|
||||
assert content.dependencies == []
|
||||
|
Loading…
Reference in New Issue
Block a user