From e4f94b6ad592213464dc44d06cb5b141c7afc743 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Tue, 22 Dec 2020 20:48:26 +0100 Subject: [PATCH] V 0.2 --- CHANGELOG.md | 61 ++++++++++++++++++++++++++++++--- v.mod | 2 +- vlib/v/tests/vmod_parser_test.v | 2 +- vlib/v/util/util.v | 2 +- 4 files changed, 60 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 260a503c88..5f9cf6ba8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,62 @@ -## V 0.1.30 -*28 Nov 2020* -(V 0.2 RC) +## 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 +- Channels and locks. +- Thread safe typed arrays via keyword `shared`. +- Struct embedding. +- IO streams. +- A powerful websocket module that conforms to RFC 6455 and passes the Autobahn test suite (498 client tests and 249 server tests). +- V's graphics module now uses Metal/DirectX/OpenGL instead of just OpenGL. +- V can now run in the browser via WASM and execute V code by translating it to JavaScript: +https://v-wasm.now.sh +- V binaries for Linux/Windows/macOS are now built and deployed automatically via GitHub Actions. +- Smart casting for sumtypes and interfaces, including complex expressions: `if x.expr is int { println(x.expr + 1) }`. +- Smart casts for interfaces. +- A new `term.ui` module for building dynamic terminal UIs with an example editor written in it. +- Clean and easy way to sort arrays: `users.sort(a.name > b.name)`. +- A huge amount of `vfmt` fixes and improvements. It has now reached a point where it can be safely used on any V source file. +- A new CI job that runs `v fmt -verify` on the entire code base, a new command that makes sure the file +has been vfmt'ed. This ensures that all code submitted to the V project is formatted. +- A new tool `v vet` for analyzing the project and finding potential bugs and errors. +- Early iOS and Android support. +- All missing ORM features from the old backend were brought back. +- Magic `it` variable has been replaced with smart casts (the change is completely handled by vfmt). +- Explicit parentheses requirement in complex boolean expressions +- Cross-compiling to Windows and Linux brought back. +- C2V can now generate wrappers. Example: https://github.com/medvednikov/libsodium. +- C++ compiler support: code, generated by the C backend can now by compiled by C++ compilers. +- Short generics syntax: `foo(5)` instead of `foo(5)`. +- Cached modules via `-usecache`. Faster compilation due to not needing to rebuild the entire vlib for +each program. Will be enabled by default in 0.2.1. +- New improved sum types implementation. +- Lots of errors that happen often during the development cycle were turned into warnings to increase + development speed. They are still errors in production builds. +- Labeled `break` and `continue`. +- Lots of documentation. The official language documentation grew 3 times in size. +- `modules.vlang.io` is now generated automatically on every commit. - Builtin compile-time JSON serializer now supports `time.Time`. +- Fixes in type alise, to make them behave just like the types they alias. - `array.contains(element)` is now generic. -TODO +- Lots of improvements to the JS backend and its type system. +- Simpler and more constinent function arg syntax: `foo(a int, b int, c string)` instead of `foo(a, b int, c string)` +- Lots of fixes and optimizations in the hashmap. +- Lots of missing checks in the type checker were added (for example, checking the correct usage of public struct fields). +- Mutability bug fixes +- Taking the address of a map value is no longer allowed, like in Go. +- Matrix multiplication. +- `println` was made even smarter, and can now handle complex types. +- Precompiled text templates can now be used outside of vweb via `$tmpl()`. +- Gitly, a big web application written in vweb has been released: https://github.com/vlang/gitly +- `['/:arg1/:arg2/action']` vweb action attribute for easily getting query parameters assigned to method arguments. +- Improved performance of text rendering, `gg.text_width()`. +- Webview module in V UI. +- Binary enum flags. +- `[export]` attribute to change exported function name (for example for calling from a C library). +- `unsafe` +- Hundreds of other fixes, features, and tests (from now on the changelog will be updated +right away as the feature/bug fix lands). + ## V 0.1.27 *5 May 2020* diff --git a/v.mod b/v.mod index 1f4ad64748..4ad0b19c12 100644 --- a/v.mod +++ b/v.mod @@ -1,7 +1,7 @@ Module { name: 'V' description: 'The V programming language.' - version: '0.1.30' + version: '0.2' license: 'MIT' repo_url: 'https://github.com/vlang/v' dependencies: [] diff --git a/vlib/v/tests/vmod_parser_test.v b/vlib/v/tests/vmod_parser_test.v index c5c754afbe..4c789ae296 100644 --- a/vlib/v/tests/vmod_parser_test.v +++ b/vlib/v/tests/vmod_parser_test.v @@ -6,7 +6,7 @@ fn test_from_file() { data := vmod.from_file('./v.mod') or { panic(err) } assert data.name == 'V' assert data.description == 'The V programming language.' - assert data.version == '0.1.30' + assert data.version == '0.2' assert data.dependencies.len == 0 } diff --git a/vlib/v/util/util.v b/vlib/v/util/util.v index ed2acc0004..651b54d1e9 100644 --- a/vlib/v/util/util.v +++ b/vlib/v/util/util.v @@ -9,7 +9,7 @@ import v.pref import v.vmod pub const ( - v_version = '0.1.30' + v_version = '0.2' ) // math.bits is needed by strconv.ftoa