1 | ## V 0.3.3 |
2 | *30 Jan 2023* |
3 | -**wip** |
4 | +- String interpolation simplified to just '${name}', enforced by vfmt, and updated in the entire code base. |
5 | +- `[]` is now used for generics instead of `<>`. |
6 | +- Various ORM fixes and improvements, including string interpolation support, type checks, fn calls in `where`. |
7 | - Accessing a pointer map value requires an `or {}` block outside `unsafe`. |
8 | - `math.vec` module for generic vector math including 2D, 3D, and 4D vector operations. |
9 | - `go foo()` has been replaced with `spawn foo()` (launches an OS thread, `go` will be used for |
10 | - vfmt now supports `// vfmt off` and `// vfmt on` for turning off the formatting locally for short snippets of code. |
11 | Useful for keeping your carefully arranged matrices intact. |
12 | - fast.vlang.io fixes & improvements, new server. |
13 | -- String interpolation changed to just '${name}'. |
14 | - New official IntelliJ plugin: https://intellij-v.github.io. |
15 | - Lots of fixes in the type checker. |
16 | - Match branch range expressions with consts: `match x { const1...const2 {} }` |
17 | - Improved documentation for most of the vlib modules |
18 | - All of vlib has been updated to use separate Option/Result types. |
19 | - To avoid confusion, all references in the code and documentation to `Optional` have been replaced with `Option`. |
20 | -- `gg.Context` pipeile has more effects, including the `additive` effect. |
21 | +- `gg.Context` pipeline has more effects, including the `additive` effect. |
22 | - Hot code reloading via `[live]` is now supported in imported modules, not just the main module. |
23 | - VFS support in the builtin `sqlite` module; `sqlite.get_affected_rows_count()`. |
24 | - `make.bat` & `v up` improvements on Windows. |
25 | - Much cleaner eof checks in `os`: refactor `err == IError(os.Eof{})` to `err is os.Eof`. |
26 | - Const functions: `const y = term.yellow`, then `println(y('abc'))`. |
27 | - Lots of work on `x.json2`, the pure V json encoder, soon to become official. |
28 | -- Improved compile time checks, like `$if x is Type {`; `$if T in [$Array, $Struct] {`. |
29 | +- Improved compile time checks, like `$if x is Type {`; `$if T in [$Array, $Struct, $Alias, $Function] {`. |
30 | - New `v.reflection` module for runtime reflection. |
31 | -- Improved `os.mv()`, which now works consistently even across different windows drives/mount points |
32 | -- `string.trim_indent()`, useful with multi line strings, that start/end with new lines and indentation |
33 | +- Improved `os.mv()`, which now works consistently even across different windows drives/mount points. |
34 | +- `string.trim_indent()`, useful with multi line strings, that start/end with new lines and indentation. |
35 | - Reduced memory consumption in the `crypto` modules. |
36 | - Installation instructions for using V on NixOS. |
37 | - TeamCity test runner support via `v -test-runner teamcity foo_test.v`. |
38 | - Better `make` support for OpenBSD. |
39 | -- Much improved experience for `v install pcre` on Windows (it now bundles its own .c files, so it compiles cleanly, even if the platform does not have another pcre package installed) |
40 | +- Much improved experience for `v install pcre` on Windows (it now bundles its own .c files, so it compiles cleanly, even if the platform does not have another pcre package installed). |
41 | - Improved vweb stability under load. |
42 | - Improved `pg` compatibility with older PostgreSQL versions before 2014. |
43 | +- Native backend: operator support for floats, multi return. |
44 | +- V can now be compiled with tcc on latest macOS and Apple Silicon. |
45 | +- CI optimizations for faster runs. |
46 | +- Official V UI library is now licensed under MIT. |
47 | +- Deprecated `math.util` and `math.mathutil` have been removed. |
48 | +- Builtin type names can no longer be used as identifiers. |
49 | +- Generic `typeof[T]()`, `sizeof[T]()`, `isreftype[T]()` functions. |
50 | +- New official AdventOfCode repo with AOC solutions, also added to CI. |
51 | +- New time format support: `time.format_rfc3339()`. |
52 | +- `encoding.html.escape()`. |
53 | +- Deprecated `-error-limit` in favour of the documented `-message-limit` option. |
54 | +- Maps now support aliased keys. |
55 | +- Operator overloading now works with reference types. |
56 | +- Generic struct inits with nested generic structs and generic optional types are now allowed. |
57 | +- During array creation, `len:` is required when using default values for the array. |
58 | +- Optimized one byte `[]u8` arrays creation. |
59 | +- Int signedness mismatch is now checked: `cannot use literal signed integer as u8`. |
60 | +- New comptime features for fields: `field.is_<field>`, `field.is_alias`, `field.is_enum`. |
61 | +- More detailed timings in `v -show-timings`. |
62 | +- `$for in` works with alias types. |
63 | +- `v new <name> web` for quickly scaffolding new web projects. |
64 | +- All public functions in the `hash` and `encoding.base32` modules have been documented. |
65 | +- Recursive aliasing is no longer allowed (e.g. `type Alias = map[string]Alias`). |
66 | +- `sqlite`, `pg`, `mysql` have been moved to `db.sqlite`, `db.pg`, `db.mysql`. |
67 | +- New `crypto.pem` module. |
68 | +- New `map.reserve()` method. |
69 | + |
70 | |