Releases: vlang/v
Releases · vlang/v
weekly.2024.30
releases: weekly.2024.30
weekly.2024.29
releases: weekly.2024.29
weekly.2024.28
releases: weekly.2024.28
weekly.2024.27
releases: weekly.2024.27
weekly.2024.26
releases: weekly.2024.26
weekly.2024.25
releases: weekly.2024.25
weekly.2024.24
releases: weekly.2024.24
weekly.2024.23
releases: weekly.2024.23
weekly.2024.22
releases: weekly.2024.22
0.4.6
V 0.4.6
20 May 2024
Improvements in the language
- Experimental
x.vweb
is nowveb
, the official and recommended way to build web apps in V. Built on top of pico.v. - autofree: -print_autofree_vars command line flag for printing variables autofree couldn't free
- Add
@VMODHASH
comptime variable to store the commit sha of a V module (#21091) - Fix sumtype support for option variant types (#21101)
- Utilize new diff functions in errors (expected/found) (#21431)
- Add @[_linker_section] for global variables
Breaking changes
- checker: disallow initializing private struct fields outside structs module (#21183)
- vlib: update handling of imports whose symbols are not directly used in imported file, remove
pub const is_used = 1
workarounds (#21160) - net.ftp: allow to choose a different port than port 21 (change FTP.connect to accept
host:port
, not just ahost
address) (#21185)
Checker improvements/fixes
- Ambiguous expression notice for
& << >>
, similar to&& ||
- Disallow using aliases of ?Type as !Type (#21128)
- Fix option checker arg validation for ptr passing on non expected ptr (#21087)
- Optimize option and result type check, add more typinfo to error details (#21105)
- Move error handling for
any
type to the checker to resolve parsing issues (#21146) - Move error handling for user defined type duplicates to the checker to resolve parsing issues (#21147)
- Detect redundant ref when assigning call expr with ref return (#21141)
- Fix multi return using nil and voidptrfix (fix #17343) (#21144)
- Fix C struct embedded init fields checking (#21137)
- Remove resolved vfmt workaround and TODO (#21175)
- Move more match validation from the parser into the checker, add error for match without branches (#21181)
- Improve the error message for an unknown type (#21207)
- Allow passing
none
tofn f(arg ?&Type) {
(fix #21213) (#21231) - Fix -parallel-cc regression (part 1, workaround .filter(fn[c]) used in checker/orm.v) (#21238)
- Detect and error on unreachable code in loops, after
continue
andbreak
statements (#21294) - Disallow
Result
callbacks functions likemap/filter/all/any
(#21055) - Fix missing check for or expr on string interpolation (#17566)
- Allow pass array as mut param to spawn fn (#21283)
- Turn array assign warning into error (#21341)
- Ignore last semicolon on or-expr (#21361)
- Disallow structs with
@[params]
attribute as mutable function parameters (#21206) - Set auto Return pos correctly; cgen: autofree fix for optional returns
- Disallow invalid ptr operations (#21515)
- Fix wrong checking for heap struct (#21511)
- Allow alias enum flagged to have bit operations (#21532)
- Simplify, utilize pref.vroot (#21096)
- Fix option interface member checking when
none
is passed (#21509)
Parser improvements
- Fix option as possible match case for sumtype (#21079)
- orm: disallow invalid infix for where clause in
delete
andupdate
(#21113) - Fix case of falsely registering imports as used, remove unused imports (#21156)
- Remove redundant comments_mode field (#21198)
- Update file path fields; use more expressive name for file path, remove obsolete
file_name_dir
field (#21202) - Add missing docstrings for vlib/v/ast/comptime_const_values.v functions (#21219)
- Allow struct init on
for in Iterator{} {
(fix #21179) (#21282) - Fix
for x in Iterator{} {
, when there are no field initialisations (#21333) - Add check for result type on chan init (#21363)
- Fix comptime panic for
$tmpl("x.html")
, when the template file contained % at the end (#21402) - Parse string and array typ idx of
ScopeVar
andIdent
(#21523)
Compiler internals
- v.util: use tmp instead of cache dir for temporary diff files (#21075)
- v.util: fix module lookup if module import parts end with the word
modules
(#21083) - v.util: update
githash
to be able to get the githash of every passed project (#21178) - v.util: improve detection for opendiff when automatically searching difftools (#21241)
- v.util: improve color_compare_files (#21247)
- v.util: improve find_diff_cmd: don't add spaces to result without env opts (#21242)
- v.util: fix diff coloring, add test (#21260)
- v.util: polish off diff utils after recent updates and fixes, add doc comments to pub fns (#21275)
- v.builder: suggest using
v wipe-cache
, when the object files are not recognized - pref: be more conservative when generating code using
-cross
, allow for$if cross ? {
- builder: use cc enum in CcompilerOptions, fix cc detection, enable cc guessing without prod flag (#21370)
- pref: fix version flag handling (#21377)
- pref: make minor performance related changes / simplify (#21379)
- builder: simplify generic cc detection (#21380)
- pref: extract architecture related code into
arch.c.v
; renamepref.c.v
topref.v
(#21387) - pref: update
os_from_string
, add missingqnx
, remove deprecated wasm options that used-
instead of_
(#21390) - v.util: rewrite diff module, deprecate old functions (#21403)
- v.util: fix color when auto tool is
diff
(#21435) - v.util: make diff_test.v more robust to the color settings for the chosen local diff tool
- v.util: fix performance with
v test-cleancode
, when a slower diff tool is installed (#21447) - v.util: remove fast path in
diff.compare_text
(#21458) - v.pref: error for
v file.v --unknown-option
(#21391)
Standard library
- builtin,dlmalloc: fixes for
v vlib/v/gen/c/coutput_test.v
for gcc14.1, which is stricter - Min window width and height
- builtin: str.last_index(); pref: hide-auto-str;
- toml: update the alexcrichton and BurntSushi repos to their successors toml-rs, and toml-test, record new exceptions (#21152)
- json: allow
i32
decoding and encoding (#21162) - json2: add ability to decode arrays (#21163)
- json2,checker,toml: allow field.typ compile-time checking with MatchExpr and add array of option checking (#21171)
- gg: draw_text with custom fonts
- x.json2: add a way to decode an array (#21186)
- os: clarify some doc comments (#21209)
- os: fix double free in os.get_raw_line() (used by os.input), with
-autofree
(#21204) - time: extract Duration related code into duration.v (#21229)
- builtin: implement an
at_exit(cb)
wrapper for C.atexit (part 1) (#21254) - os: format readme, fix markdown inside html (#21286)
- time: update unix time acces, fix issues related to deviating unix times (#21293)
- vlib: refactor empty string checks to use
s == ''
ors != ''
, instead ofs.len == 0
(#21300) - cli: update
command_test.v
(#21307) - cli: extend control over defaults (#21308)
- thirdparty/sokol: bump _SGL_DEFAULT_MAX_VERTICES and _SGL_DEFAULT_MAX_COMMANDS again; mark them with
__v_ start
and__v_ end
- sync: add Gentoo paths for libatomic
- sync.stdatomic: add flag lines for gcc 14 too
- gg: make
PenConfig
fields public (#21353) - builtin: fix undefined read s[0], from ''.is_lower() and ''.is_upper() in c7af2c2
- builtin: fix empty string lower / upper assert (#21358)
- cli: simplify flag parsing (#21392)
- os,runtime: workaround for v.c generation instability
- datatypes: fix for set
-
operator, union and intersection, now they no longer change the receiver (fix #21315) (#21362) - sync.stdatomic: add paths for compilation with musl on Gentoo (#21400)
- os: fix os.execute stderr redirection (fix #20986) (#21404)
- time: fix the string representation of a negative Duration (#21407)
- cli: make program outputs using the cli module testable in
cli/testdata
(#21456) - math.unsigned: permit _ separators in Uint128 decimal strings passed to uint128_from_dec_str (#21461)
- cli: fix default flags when their command equivalents are disabled (#21469)
- toml: simplify
decode_quoted_escapes
(#21472) - os: fix join-path (#21425)
- builtin: simplify MessageError.msg() (#21524)
- all: replace usages of C.atexit(cb) with
at_exit(cb) or {}
(part 2) (#21263) - math.unsigned: fix some Uint256 bugs and add tests (#21528)
Web
- Update
mbedtls
to latest compatible version v3.3.0 (#21118) - veb.auth: a minor find_token fix
- Improve descriptions (#21155)
- ci: change listen ports in vweb_should_listen_on_both_ipv4_and_ipv6_by_default_test.v for both vweb and x.vweb, to reduce probability of network errors
- ci: mark both vweb and x.vweb versions of vweb_should_listen_on_both_ipv4_and_ipv6_by_default_test.v as flaky
- x.vweb: accept query params as method arguments (#21201)
- net.http.file: support index_file (
index.html
by default), and auto_index (true by default) parameters to file.serve() - veb: copy x.vweb to veb, and make it work with comptime
- ci: fix the ubuntu-docker-musl job by skipping veb_app_test.v
- pref: support a shortcut:
v -http
forv -e "import net.http.file; file.serve()"
. - net: add a .port()! method for net.Addr (#21412)
- net: improve error message in .port()
- picoev: handle
EAGAIN
orEWOULDBLOCK
quietly (#21480) - net.unix: remove debug/trace eprintln (#21517)
ORM
- Add error for unchecked option multi return types, fix undefined behavior (#21106)
Database drivers
- db.mysql: fix invalid memory access in exec_one for returned rows with NULL fields (#21317)
C backend
- Enable autofree for option (#21051)
- Force C struct types which does not implement str() to be passed as ptr (#21054)
- Improve diagnostic information for ORM queries with invalid types
- Allow static call on generic type (#21071)
- Fix code generation for a struct field, having a type of fixed array of options
field [5]?Type
(#21082) - Add the
_M_ARM64
macro to endianness check (#21109) - Fix return code when returning interface result type (fix #21115) (#21130)
- Fix const initialized with array (#21131)
- Fix infix array heap comparison (#21145)
- Fix C struct sumtype support (#21129)
- Add
autofree
comptime check (#21197)
...