V 0.5.2
12 Jul 2026
Improvements in the language
- Implement @[soa] struct attribute for Structure of Arrays transformation (#26738)
- Initial version of ownership via -ownership. All logic is behind comptime, so it won't have
any speed/size impact on normal V (#26852) - VGC, a concurrent tri-color mark-and-sweep GC translated from Go (#26739)
- ios and macos modules that allow writing code without Objective C
- Enable the new V2 backend via
v -v2 file.v - Optional error parameter for closing channel (fixes #19203)
- Allow negative indexing of array like
arr#[-1](fixes #24066) - Add power operator
**(fixes #24067) - BusyBox shebang #!/usr/bin/env -S v run (fixes #26820)
- Add ability to view code coverage output in editor (fixes #24416)
- Add new standard module: mcp (Model Context Protocol integration) (fixes #25694)
- Add operator overloading for
[](fixes #23177) - vweb removed entirely (it was deprecated and replaced with veb a while ago)
- Comptime $if bsd (#26983)
V interpreter
- v2 eval backend (#27528)
Breaking changes
Checker improvements/fixes
- Allows you to pass a numeric value to JS.Number without a cast (fixes #24677)
- Add self-comparison and always true/false branch warnings (fixes #23404)
- Fix byte/u8 array param type checking and var-fn name clash (fixes #26492)
- Skip ref field init check when default expr exists (fixes #25213)
- Add error test for Result type in struct init fields (fixes #18210)
- Support smartcasting on index expressions (fixes #26550)
- Fix embedded struct member visibility (fixes #13607)
- Fix enum variant equality test is not commutative (fixes #10331)
- Fix implementing a generic interface using a concrete type does not compile (fixes #24060)
- Fix local variable with module before should give a compiler error (fixes #10658)
- Fix compiler omits to define struct method used in generic function (fixes #26419)
- Fix cannot sort 2d array (fixes #23892)
- Fix i64 transfer to f64 should be explicit (fixes #14934)
- Fix "Builder Error" when defining field
gg gg.Context = unsafe {nil}not as a pointer (fixes
#15201) - Fix aliased pointers not recognized (fixes #24621)
- Change array initialization syntax (fixes #7061)
- Fix confusing error message when test file gets an invalid name (fixes #15642)
- Fix arrays.sum([]) or {panic(err)} produces misleading error message (fixes #22859)
- Added support for hover function declaration (#26789)
- Fix orm compiler crash (fixes #18269)
- Fix multiple bugs related to alias + reference (fixes #24010)
- Fix [params] struct visibility error location (fixes #16389)
- Fix immutability of variable may be broken (fixes #17135)
- Fix arithmetic operator overloading result type (fixes #23194)
- Fix type-casting issue with generic function as argument (fixes #21132)
- Fix cannot use &int as &&int in argument (fixes #23019)
- Fix implicit cast inconsistency (fixes #26759)
- Fix using sum type or interface for os.file.write_struct (fixes #19117)
- Match on mutable sumtype doesn't compile (fixes #16506)
- Custom error without
IError()crashes V (fixes #16921) - Cannot return a function from a generic function (fixes #22011)
- Unexpected sizeof() result on union (fixes #23141)
- Array returned by function bypasses illegal sumtype conversion checker error (fixes #23271)
- Duplicate case value (fixes #25240)
- SIGSEGV termination with os write_struct() and read_struct() when in separate v files (fixes
#11285) - Generics not passed to arguments when argument has a struct with generic (fixes #24318)
- Generics compile failure (fixes #24471)
- Immutable instance of a struct can be modified via interface (fixes #23509)
- Should report
unused parameterin function parameters (fixes #26213) - Passing a function to a function as a parameter does not work (fixes #22008)
- Error behavior in array of sumtype has array subtype (fixes #26363)
- Builder error "This should never happen" (fixes #12434)
- Match []u8 gives &[]u8 (fixes #24054)
- Unresolved variable in
defer(fixes #17309) - C compilation error with shared struct (fixes #25160)
- Error casting aliases to generic types (fixes #13863)
- Map key type
time.Timenot supported (datatypes.Set[time.Time]) (fixes #25013) - Field does not exist with embedded structure and sumtype variants (fixes #11290)
- Specific array initialisation fails (fixes #14261)
- Some bug with comptime (fixes #26234)
- Creating array as value of map must be explicit when using
<<(fixes #18160) - V compiler bug: error when casting a generic function intricated in a generic type used in a
generic sum type (fixes #25930) - Cannot convert 'struct _option_string' to 'unsigned char *' (fixes #26347)
- Shared work on primitive types (fixes #25611)
- V sometimes thinks 1 == &1 (hidden dereferencing that shouldn't be there?) (fixes #11543)
- Wrong type is inferred in generic (fixes #19036)
- Invalid memory access with array of empty interface return type (fixes #24864)
- Fix generic type mismatch with generic functions from multiple sources (fixes #25217)
- Fix veb c compilation error when context not mutable (fixes #25361)
- Fix inline array index assignment with literals (fixes #9691)
- Fix c binding compiling to wrong c intermediary (fixes #19046)
- Fix cannot use $if/$else to set value of enum (fixes #23336)
- Fix return error() in match (fixes #16387)
- Fix cannot implement empty interface with different interface (fixes #24193)
- Fix select chan timeout (fixes #15269)
- Fix null pointer constructed and dereferenced in safe code (fixes #20497)
- Fix compiler bug when running tests (fixes #18121)
- Fix cannot match generic type in generic function (fixes #24648)
- Fix implicitly-added str method not available to interfaces (fixes #24791)
- Fix passing function as argument to vec.mul_scalar (fixes #25829)
- Support flag_var bitwise_operator= .enum_flag (fixes #20940)
- Fix duplicate case value for match with u8 and int (fixes #26627)
- Fix sumtype else branch of if !is should consider smartcast (fixes #13587)
- Fix referenced operator overloading not working (fixes #15551)
- Fix clang build generic issue (fixes #15285)
- Fix incorrect memory access with generics passing array (fixes #26587)
- Fix c compile error with ui.window.on_resize (fixes #13339)
- Fix passing normal array to array of interface type (fixes #18920)
- Fix enum values set with constants from $if/$else (fixes #23348)
- Fix array of variant not accepted for array of sumtype (fixes #24140)
- Fix arbitrary pointers in safe code (fixes #25247)
- Fix builder error when using function types from a module (fixes #18853)
- Fix broken operator overloading for aliased arrays (fixes #23213)
- Fix veb closure middleware generic inference error (fixes #23868)
- Fix guards being ignored (fixes #24401)
- Fix c error printing reference of a non-integer variable (fixes #23461)
- Fix cannot return struct implementing interface with return match (fixes #24148)
- Fix dereference of T after $if T is $pointer (fixes #25619)
- Fix error compiling a type alias with match (fixes #13860)
- Fix clang build error with if expr in or block (fixes #15214)
- Fix error message for missing import or block path (fixes #21533)
- Fix c structs pub inconsistency (fixes #22293)
- Fix pub field of private struct accessible outside module (fixes #26625)
- Fix generics relying on symbol declaration order (fixes #24678)
- Fix undeclared c constant not being checked (fixes #15893)
- Fix implementing generic function for generic function type (fixes #18037)
- Add declaration errors for unused functions and constants (fixes #19079)
- Fix int <-> u8 promotions (fixes #25936)
- Fix optional value in maps not allowed (fixes #26235)
- Fix type-casting issue when providing generic function as argument (fixes #21132)
- Fix consecutive asserts ignoring previous (fixes #24194)
- Unknown type for json.decode with nested generics (fixes #22220)
- Mutating immutable variable (fixes #21080)
- Error handling, compile error (fixes #20980)
- V error not allowing locking of element in array of shared structs (fixes #23449)
- Cgen, checker: pointer in generic function (fixes #22791)
- Support smart casting receiver var (fixes #24670)
- Test vlib/v/tests/aliases/modules/value/value_test.v failed in a single file (fixes #26103)
- Misleading or wrong error message in UTF-8 byte sequence verification (fixes #25874)
- Compiler accepts &int as a key for map[int]int (fixes #23069)
- Incorrect error message when importing modules indirectly (fixes #16271)
- Asm bad operand with opcode error (fixes #10708)
- Mutability breaks encapsulation principle (fixes #24719)
- Passing interface to generic function result in C error. (fixes #18320)
- Error when using options fields (fixes #18333)
- Add support for generic struct params (fixes #24191)
- Cross compiling for windows on Linux Mint, openssh issue (fixes #13978)
- Comparing interface with struct instance gives c error: invalid operand types for binary
operation, invalid aggregate type for register load (fixes #24018) - Maps with non-generic interfaces as values don't work (fixes #16576)
- Types should be interchangable if they have the same structure (fixes #26190)
- Segmentation fault when trying to use an array return type for a pool_processor callback (fixes
#21543) - Fix cannot use
[]Dataas[]Colseven thoughDataimplementsCols(fixes #23666) - Fix type inference with generic structs and generic interfaces (fixes #19618)
- Fix cannot convert struct to struct pointer in generics (fixes #21835)
- Do not force the declaration of unused callback params (fixes #24460)
- Fix empty interface array push with fixed array c error (fixes #23011)
- Implement syntax change for fixed arrays (fixes #25183)
- Fix enum taking function as init value when cast to int (fixes #25908)
- Fix mut smartcasts not working correctly (fixes #17440)
- Fix TCP server socket file descriptor corruption when using GC (fixes #18263)
- Fix anonymous generic struct shadow variable (fixes #15535)
- Fix using only C functions from a module making it appear unused (fixes #26232)
- Fix wrong error when smartcasting references to sumtypes (fixes #17236)
- Fix wrong alias management in generic methods (fixes #24012)
- Fix checker error for veb handler param type (fixes #24870)
- Fix nested
ifexpression causing compilation error (fixes #26865) - Fix smart casting on array's element (fixes #14766)
- Fix simple generic structure declaration error (fixes #21989)
- Fix missing compile time error for option selector in or block (fixes #17761)
- Fix wrong alias management in generic methods (fixes #24011)
- Fix compiler bug with bound mut ref callback (fixes #14741)
- Fix invalid utf8 string warning in character literal (fixes #23741)
- Fix silent conversion of u64 to f64 (fixes #21778)
- Fix wrong check error when using
mut+interfacein function parameter (fixes #26159) - Add @[nocopy] attribute to prevent struct value copying (fixes #26721)
- Fix type promotion not working with bitwise operators (fixes #9943)
- Fix error for same function signature passed as argument (fixes #13965)
- Fix private C definition causing compile error if importing
osearlier than others (fixes
#15811) - Fix cannot assign to
*valwith StructTypePointer (fixes #23020) - Fix vdoc failing to compile on macOS Sequoia (fixes #26698)
- Fix .str() method inconsistent behavior (fixes #25825)
- Fix failed type inference for fold with lambda expression (fixes #25934)
- Prevent mutation of a function result which should be immutable (fixes #13817)
- Fix infix arithmetic on explicit struct pointers (#26810)
- Fix cgen error redefinition of type (fixes #26884)
- Delete the default zero value in v (fixes #23940)
- Fix returning private struct from public function works without noinit (fixes #18427)
- Fix setting variable through generic function to any{} field (fixes #19010)
- Fix generic function with generic sumtype compile error (fixes #25248)
- Fix getting index of an array with ref arg (fixes #17800)
- Fix checker checks wrapped generic type while cgen uses incorrect type (fixes #20664)
- Support passing generic types to orm select (fixes #24041)
- Fix option smartcast after non-option assignment (fixes #23611)
- Fix stacking multiple types producing error in match smartcast (fixes #25418)
- Fix c error when reference field improperly initialized (fixes #25980)
- Fix implements keyword not working with generics (fixes #22629)
- Fix ice when sorting an array of functions (fixes #10739)
- Support $for variant in field.typ.variants for sumtype fields (fixes #26902)
- Fix return 0; throwing unreachable code error (fixes #26916)
- Fix named function type embedding (fixes #26918)
- Fix !-propagating call to always-erroring function still requires placeholder return (fixes
#26895) - Fix mutable pointer parameters under certain circumstances (fixes #24408)
- Allow c declarations imported from an external module to be used for casting (fixes #26192)
- Fix assert expression with -(-2) or +2 sub expression (fixes #26815)
- Fix unhandled exception on map with anon fn value (fixes #23522)
- Fix ?&t cannot be compared to nil in comptime indirections branch (fixes #26893)
- Fix passing fixed array [n]t to generic function expecting []t (fixes #26899)
- Fix int values incorrectly promoted to f32 (fixes #7692)
- Fix Compilation crash on OpenBSD since commit ee64e96 (fixes #26930)
- Fix cgen error when using
sdl.Windowas non-ref type for struct field (fixes #23042) - Fix app timeouts once "before_request" middleware is registered. (fixes #24782)
- Fix Compiler doesn't catch type mismatch with
intandtime.Duration(fixes #18873) - Fix Regression: V can't match generics variant (fixes #26866)
- Fix Modifying an immutable pointer indirectly is allowed (fixes #12899)
- Fix arrays in maps should be inferred based on the first value in the map (fixes #19253)
- Fix Error in return
nonefrom or block insidematch(fixes #17422) - Fix Generic method unable to implement an interface with a different interface passed as argument
(fixes #20670) - Fix empty
[noreturn]function (fixes #18018) - $if (int(typeof(val).idx) >> 16) & 0xff == 0 { (fixes #20398)
- [ ';' expected (got "MessageError") ] (fixes #13484)
- Err fix (fixes #26975)
- Generics fix (fixes #27032)
- Validate or-block defaults before outer casts (#27059)
- Overwrite stale unresolved fixed-array sym for struct fields (fix #27078) (#27081)
- Update fixture outputs (#27155)
- Report unwrapped option in infix arithmetic (fix #27082) (#27225)
- Allow
C.S{}zero-init for C structs with reference fields (fix #27170) (#27228) - Explain smartcast narrowing in
or {}/?error on unwrapped option (fix #27130) (#27238) - Warn when a local variable shadows a function declaration (fixes #22685) (#27272)
- Accept
[]Alias↔Tokenspayload equivalence (fix #27006) (#27278) - Fix static method used as
map/filterargument (#27328) (#27331) - Fix cgen 'pointer expected' for loop-local var passed to variadic interface arg (#27327)
- Fix return if fn multi-return (#27347)
- Improve missing C function diagnostics (#27414)
- Reject optional array args for plain arrays (#27425)
- Require common fields for match aggregates (#27428)
- Infer generic fn values from call args (#27426)
- Reject pointer targets in json.decode (#27427)
- Infer generic fn values from call args (#27432)
- Fix spawn-in-if/match-expr, zero-alloc error sentinel, cheaper slice marking, scalable GC (#27544)
- Reject multi-return elements that disagree on option-ness (fix #27562) (#27565)
- Register nested generic str deps (#27442)
- Reject address of bound method values (#27657)
- Reject
&reference of fixed array alias (fix #27646) (#27661) - Require mutable array for reverse_in_place (#27743)
Parser improvements
- Fix array init with parenthesized optional elem type (fixes #16515)
- Support
.to_fixed_size()method on array literals (fixes #22849) - Fix function body
{error message is not correct (fixes #16133) - Fix wrong error when declaring attribute after incomplete variable declaration (fixes #23396)
- Fix compiler does not infer field type and raise inappropriate error when initializing struct
(fixes #14762) - Fix referring map entries in template files (fixes #12091)
- Fix vweb.html() converts at characters in links of template file to dollar characters (fixes
#14104) - Fix thread variable in struct causing inconsistent expecting type declaration error (fixes #25330)
- Fix function argument commas (fixes #20526)
- New syntax for attributes (fixes #25502)
- Fix c functions do not warn for param named interface (fixes #25859)
- Fix incorrect error message for badly constructed struct (fixes #25380)
- Avoid closure auto import for field names (#26808)
- Generic interface methods expect old syntax (fixes #25087)
- V doesn't ignore variables in HTML comment template (fixes #12171)
- Template allows $ instead of @ (fixes #14788)
- Add support for optional parameters in function declarations (fixes #24910)
- Error: ';' expected (got "main__V4") (fixes #26422)
foo := bar;foo[2..]works butbar[2..]don't (fixes #14339)- Failed to compile: Reference to a function prefixed with a type name is expected to be an enum
(fixes #26414) - Fix for loop not working in $tmpl templates (fixes #23447)
- Move error/warning messages from parser to checker (fixes #26097)
- Fix initializing fn field with matching fn function with ref params (fixes #16291)
- Fix inconsistent compiler bug with type resolution (fixes #25701)
- Fix $tmpl not locating template file for composed paths (fixes #24752)
- Fix chained methods not parsing correctly when . is separated from name (fixes #23258)
- Fix defer not being executed in compiler code (fixes #14438)
- Fix line indication for channel push syntax error (fixes #23571)
- Fix initializing anonymous struct (fixes #16207)
- Module function name conflict to keyword/type (fixes #23173)
- Import : warning err (fixes #24110)
- All fields within a structure param should be public by default (fixes #24234)
- Allow to omit commas in multiline function signature block (fixes #22021)
- Vfmt "breaks" invalid code with map of
[]u8withcap:instead of giving error (fixes #24055) - Generic closure that returns multi return with array generic type does not work (fixes #17876)
- Fix inaccurate error message in match expressions (fixes #13669)
- Allow using orm as a value in
ifexpressions (fixes #23680) - Fix vdoc panic with invalid type when generating docs (fixes #26348)
- Allow getting element by index or propagating an error to the caller (fixes #23452)
- Fix errors using conditionals in vweb templates (fixes #19475)
- Fix assert without comma but with message confusion with vfmt (fixes #25005)
- Add
$compile-time code on root/module level (fixes #20420) - Fix comptime $else { import log } error when in one line (fixes #26527)
- Fix assignment error with recursive definition in sum types (fixes #14160)
- Fix as cast cannot cast v.ast.unknowntypeinfo to v.ast.array (fixes #23704)
- Add inline syntax to construct []t from a [n]t element type at comptime (fixes #26898)
- Add inline syntax to allocate a fresh pointer of comptime-discovered field type (fixes #26897)
- Fix calling function wrapped in a parexpr (fixes #22652)
- Fix
$tmplerror message improvement (fixes #16127) - Fix Failed to compile
mut threads := [4]thread (int64, int){}with multiple values (fixes
#26795) - Fix Receiver methods only work when top declared (fixes #7280)
- Fix support explicit asc keyword in order by clause for select (fixes #26951)
- Fix segfault in orm
whereexpression check when left side is an Ident (#26989) - Fix and test for list of generic bug (#27141)
- Allow short positional struct init in for-in array literal (fix #27146) (#27217)
- Count duplicate sumtype fields once (#27253)
- Fix @@ escape before complex at-expressions in templates (#27701)
Compiler internals
- optimize v3 ownership checking (#27708)
- reflection: rework attrs handling (fixes #21537)
- Fix native printing of runes, fixes native_test.v and CI failure (#26881)
- Fix dump native error (fixes #24610)
- Fix unhandled os ifdef name "x32" (fixes #20024)
- util: qualify modules relative to compilation project root (fix #27138) (#27219)
- v/v2: support array update/spread syntax
[...base, e1, e2](#22834) (#27261) - gen: avoid heap allocation for empty
.attrs/.attributes/.argsin $for (fix #27274) (#27276) - compiler: walk mut interface dispatch dependencies (#27430)
- compiler: fix generic sumtype aliases and duplicate imports (#27523)
- gc: add boehm thread-local alloc opt-out (#27572)
- compiler: fix invalid UTF-8 and ternary codegen (#27636)
- compiler: fix ownership translation and C backend blockers (#27644)
- vlib,builder,v3: add i18n and fix shared builds (#27721)
- builder: fix dynamic library loading and cc improvements (fixes #16899)
- builder: detect C++ headers included in C compilation (fixes #20634)
- builder: add Cosmopolitan/APE support for cross compiled bins (fixes #20992)
- builder: fix can't use eval in shared library compiled with tcc (fixes #24586)
- builder: fix compilation fails with bad architecture warning (fixes #14330)
- v.util: simplify the use of local modules and submodules (fixes #26025)
- v.util: fix module register being called twice with v.mod (fixes #26001)
- v.util: fix lookup fails for nested modules (fixes #14715)
- pref: allow path without filename for -o/-output flag (fixes #21766)
- builder: using structures defined in C header file leads to compilation error (fixes #19050)
- builder: "v run src" and "v run ./scr" behaves differently (fixes #24205)
- v.util: compilation error if theres "-" in path to executed file (fixes #17764)
- v.util: compiling with tcc breaks v doc (fixes #13420)
- builder: unused import (fixes #21606)
- markused: C compilation error when indexing a string, in a method, on a generic struct (fixes
#26421) - pref: fail :
v -o v2 -usecache cmd/v -gc boehm_full(fixes #24980) - builder: addr2line: 'v': No such file, instead of meaningful output, when build fails due to
internal bug (fixes #20768) - checker,pref: implement hover method for vls (#26821)
- builder: fix compiler bug error (fixes #25499)
- builder: fix compiler not found but still working (fixes #25949)
- markused: fix extra code in generated c code (fixes #26019)
- builder: fix libatomic detection to make v doc work on CentOS 8 (fixes #11949)
- builder: fix hot reload on mac thinking single implementation is duplicated (fixes #12235)
- builder: fix module resolution depending on working directory (fixes #22038)
- builder: fix linking failure with -cc gcc -parallel-cc (fixes #23209)
- builder: fix sibling module imports (fixes #21498)
- pref: fix undefined reference to tcc_backtrace when linking (fixes #23198)
- transformer: fix different test results with and without -prod (fixes #26568)
- pref: fix segfault when using gc on musl-based system (fixes #14737)
- builder: fix cannot use submodules defined inside src folder (fixes #15374)
- scanner: v parser should provide more accurate error msg (fixes #25309)
- builder: Default msvc produces slower and less optimized output than when explicitly flagging with
-cc msvc (fixes #17729) - builder: Add a .ico or .png to the .exe file in vlang? (fixes #19211)
- builder: v allows pass to -cc any compiler name and ignores if it is not found (fixes #17126)
- builder: fix wrong import check error for module (fixes #25999)
- builder: fix bad module definition in
.vmodules(fixes #12292) - builder: fix compiler bug when using imgui (fixes #12362)
- pref: fix setstacksize test failure across bit widths (fixes #24394)
- builder: fix unable to run v files with obscure filenames (fixes #19013)
- scanner: fix '$str' resulting in string interpolation/compilation error (fixes #26382)
- builder: fix crun not rebuilding c source (fixes #26876)
- scanner: fix wrong error message when identifier name starts with a number (fixes #14560)
- builder: fix module builder error (fixes #20147)
- pref: fix v -prof not working (fixes #24163)
- builder: add setting to specify sub directories as part of the same module (fixes #19902)
- builder: add a "base url" to v.mod to resolve module names (fixes #24223)
- builder: fix sdl2 creating window failure (fixes #13138)
- builder: fix default compiler cc not detected during compilation (fixes #22240)
- builder: fix building v on Debian 32-bit systems (fixes #15447)
- builder: fix error building graphic app webview due to cflags (fixes #12445)
- builder: fix c error that should never happen during tcc retry (fixes #15191)
- builder: add statically compiled tiny_gcc support (fixes #21576)
- builder: fix c error semicolon expected (fixes #25384)
- builder: fix import vsl.la failing (fixes #17389)
- markused: fix deducing generic type k from internal generic chain (fixes #22494)
- builder: fix difference in process arguments (fixes #25031)
- markused: fix segmentation fault during generic fn instantiation pruning (fixes #26928)
- builder: fix msvc builder error preventing v from running (fixes #19851)
- builder: fix cross compilation with shared argument fails (fixes #17608)
- builder: fix when using
v run <file>in a path containing spaces i get "%1 is not a valid Win32
application" (fixes #16501) - builder: fix Error when using duarteroso.glfw (fixes #23648)
- pref: fix Add bsd environment specific file support (fixes #26755)
- builder: fix Confusion between v modules and subdirectories (fixes #17232)
- v.util: fix unknown function: cli004.sub.greetings (fixes #26828)
- pref: fix Bananas compile time with termux (fixes #22671)
- builder: fix V compiler has become significantly slower (fixes #26961)
- builder: fix Aliasing of a C Struct not working unless by adding a typedef attribute (fixes
#17101) - pref: fix build failed with msvc 2022 (fixes #14784)
- pref: fix invalid option -- '-bt25' (fixes #18199)
- markused: fix generics (fixes #26979)
- pref: Add arm64 and x64 to backend message (#27023)
- builder: fix TCC compiler integration for parallel compilation (#27033)
- builder: add Macports legacy software options (#26691)
- builder: default to hidden symbol visibility for -shared (fix #27167) (#27216)
- pref: re-enable boehm GC by default for musl (fix #27090) (#27220)
- markused: keep generic
nextforfor inover instantiated iterators (fix #27147) (#27221) - builder: skip foreign v.mod project dirs when resolving imports (fix #27151) (#27231)
- scanner: fix out-of-bounds read for \x, \u, \U escapes truncated at EOF (#27212)
- builder: submit C compiler error reports (#27279)
- builder: use bugs.vlang.io for C error reports (#27298)
- builder: skip C error reports in GitHub CI (#27308)
- builder: skip bug reports for missing C libraries (#27317)
- builder: send the V source line that caused a C error in bug reports (#27332)
- builder: fix resolving symlinked modules nested in a .vmodules namespace (#27391) (#27502)
- markused: fix generic fn instantiation dedup key collision for identical module names (#27399)
- markused: mark mut-receiver interface implementors (fix skip-unused dropping anon fn) (#27380)
- builder: cover libbacktrace with tcc (#27588)
- markused: fix undeclared C identifier for alias array type (#27660)
- builder: fix bundled TCC TLS fallback and stdatomic collision (#27740)
Standard library
- Un-private
datatypes.Set.elements(#26710) - x: fix It is recommended that vlang provide a data analysis tool library similar to Python
Pandas (fixes #19355) - Add an AES-GCM support into the
aesmodule (#27484) - archive: add tar library (fixes #1180)
- compress: fix compilation fails because of multiple includes of same .h (fixes #18378)
- maps: compilation error when using
.to_array()with a map whose value type is an interface
(fixes #26567) - term.ui: fix mouse text marking for copy/paste (fixes #16191)
- yaml: [RFE] Add a YAML Module (fixes #708)
- x.markdown: add pure V markdown module (#26925)
- mcp: implement mcp server-side protocol (fixes #26917)
- encoding: fix xml module unhandled exception crashing the program (fixes #26164)
- snappy: add snappy compression (#26914)
- yaml: split module, raise conformance and performance (#27021)
- dtm2: introduce parsed runtime template manager (#27011)
- strings: fix edge case for 1 byte strings for jaro similarity (#27042)
- compress: add pure V bzip2 module (#27107)
- Context improvements (#27110)
- x.markdown: UTF-8 handling and plaintext render (#27115)
- compress: add newest compression types to README (#27126)
- compress: add pure V lz, supporting multiple variations (#27137)
- compress: make vlib/compress/lz/interop/lz77_ref.py pass on older Python versions too (Python
3.8.10) (#27143) - lz: add lzma2 variation (#27145)
- hash.crc32: add crc32c, crc32k, and crc32q variants (#27149)
- compress.deflate: changed to pure V RFC-compliant code (#27156)
- mcp: align with the 2025-11-25 spec (#27133)
- term.ui: use CSI ?2026 h/l for synchronized updates (fix #27136) (#27218)
- compress.zlib: changed to pure V RFC-compliant code (#27263)
- compress.gzip: use deflate for RFC compliance (#27320)
- hash.huffman: add shared canonical Huffman builder; migrate HPACK to it (#27392)
- compress.deflate: build Huffman trees via the shared hash.huffman builder (#27394)
- executor: add owner-thread executor module (#27540)
- strings: add Builder.write_u_decimal and write_decimal JS-backend parity (#27522)
- compress: fix deflate leaks and add brotli (#27613)
- image: add Go-inspired core image module (#27647)
- io: fix buffered writer flush and write loop (fixes #21975)
- gg: support translucent background colors with alpha blending (fixes #15755)
- io: fix stream_reader read function does not work (fixes #21768)
- strconv: fix common_parse_int not giving result when needed (fixes #17031)
- json: fix decode transforms empty objects to empty strings (fixes #19791)
- os: fix V should stop assuming characteristics of a system (fixes #17502)
- json2: fix json2.decode silently drops decoding all map values other than string (fixes #18734)
- strconv: fix compile error value
100000000000overflowsu32(fixes #20877) - time: fix unexpected freestanding error (fixes #15777)
- builtin: fix execinfo.h is not available on musl (fixes #2397)
- json2: fix decoder2 can't decode an array of sumtypes (fixes #25262)
- builtin: fix closure support for s390x/riscv64/ppc/ppc64/mips/riscv32/sparc64 (fixes #18737)
- json2: fix alias type of json2.Any can't decode json used as generic (fixes #24127)
- regex: fix module ignores ^ and $ (fixes #22119)
- time: fix parse_format breaks under -autofree (fixes #21369)
- builtin: fix error when matching literal '*' using match_glob (fixes #22867)
- builtin: fix undefined symbol and clang failure for musl (fixes #24866)
- sync: fix inconsistent doc for chan try_pop (fixes #18231)
- pref: fix no file paths for flag.new_flag_parser(os.args).string() possible (fixes #19996)
- builtin: fix VUI components not removable from stack like other widgets (fixes #25066)
- thirdparty,sokol: handle xdg_wm_base ping/pong events (#26717)
- x.crypto.mldsa: add ML-DSA signature algorithm (#26711)
- sokol: add explicit casts for g++ compatability (#26744)
- crypto.blake2b: use fixed arrays for block manipulations (#26751)
- crypto.blake2s: use fixed arrays for block manipulations (#26750)
- crypto.blake3: use fixed arrays for block manipulation (#26754)
- crypto.rand: do not go beyond the buffer boundaries (#26764)
- crypto.cipher: copy to next only after encryption in OFB mode (#26765)
- builtin: set @MarkusEd for vgc_memdup_typed() (#26783)
- tmpl: stop ignoring tmpl test fixtures (#26800)
- json2: fix iterative json parser (fixes #8986)
- pref: fix cannot register struct os.file with -b wasm (fixes #17786)
- json: fix encoding an array of references (fixes #25266)
- regex: fix matching failure (fixes #16880)
- math.fractions: use bignum (bigint) in fractions (fixes #19089)
- builtin: fix string.is_upper() issue (fixes #25560)
- toml: fix nested tables array parsing issue (fixes #26747)
- strconv: fix string interpolation with large float format (fixes #23359)
- builtin: fix string interpolation by format function (fixes #24338)
- sokol.sgl: fix limit in the pixels amount that can be drawn (fixes #14163)
- gg: fix gui program cpu consumption is too high (fixes #14691)
- thirdparty: update libbacktrace from libbacktrace project (fixes #22268)
- math: add the decimal library (fixes #25010)
- sync.pool: fix v hangs with parallel http.fetch commands (fixes #10148)
- time: fix new_time() allows completely invalid time struct (fixes #17395)
- docs: fix os.walk() cannot update mut array passed to closure (fixes #23166)
- json2: fix decoding embedded structs with references (fixes #24950)
- thirdparty.mbedtls: upgrade to v3.6.6 (#26803)
- json: unable to decode struct with Sumtype. "unknown sum type value" (fixes #15081)
- math: decimal data type (fixes #21754)
- builtin: array.get (fixes #22837)
- strconv.atoi64: parsing "1.7596215426069998e+12": invalid radix 10 character (fixes #26420)
- builtin: is wyhash broken (fixes #26651)
- os:
process.stdout_read()blocks execution (fixes #16598) - builtin: alias reference test fails (fixes #25101)
- json: output of json encode/decode of structs containing f64 arrays is not equivalent to the input
(fixes #22860) - gg: Copy gg.Event results in runtime memory access error (fixes #24157)
- io:
BufferedReader.readreturnsio.NotExpected: invalid copy of buffer(fixes #24291) - json: encodes differently unicode strings yet decoded well (fixes #25103)
- builtin: fil-C complains about the test map_generic_call_test.v (fixes #25757)
- thirdparty: ./thirdparty/stdatomic/nix/atomic.h:12:23: fatal error: stdatomic.h: No such file or
directory #include <stdatomic.h> compilation terminated. GNUmakefile:93: recipe for target 'all'
failed (fixes #12911) - json2: features required for complete generic json implementation (fixes #25218)
- builtin: optimized path for concatenting integers into strings (fixes #26703)
- builtin: VUI Menu Can Not Be Removed From The Stack or Switched Like Other Widgets (fixes #24135)
- os: just installed Vlang on system and when running program it's shows failed createprocess:%1 is
not valid win32 application (fixes #14579) - os: year-2038 problem (fixes #26664)
- crypto: add ML-DSA algorithm (fixes #26683)
- builtin: fix strings builder bug with -cg (fixes #13613)
- stbi: fix bad function parameter name (fixes #21044)
- strconv: fix v_sprintf variadic voidptr rvalue (fixes #23767)
- os: fix process module reading stdout/stderr correctly (fixes #20123)
- json2: fix decode with skipped fixed array field in union (fixes #25607)
- gg: implement context.resize() (fixes #24013)
- gg: add option to remove window decoration/frame/border (fixes #25696)
- json: fix decode() segfault on recursive struct with ?&t (fixes #26385)
- time: fix elapsed time occasionally printing 0ns (fixes #18132)
- json2: fix raw_decode failing to parse valid json content with escapes (fixes #23884)
- json: fix inconsistent serialization/deserialization for u64 (fixes #25605)
- time: fix format deprecations (fixes #26302)
- json: fix json and json2 sumtype decode issues (fixes #16477)
- json2: fix c error when using both json2.decode[json2.Any] and json2.encode (fixes #24128)
- builtin: fix map memory management (fixes #24835)
- gg: improve error message for missing assets (fixes #14501)
- encoding.binary: add stream reader/writer (fixes #19037)
- regex: add case-insensitive matching support (fixes #24664)
- sync: fix reading from a closed channel (fixes #24679)
- os: fix error reading input from shell pipe (fixes #24701)
- json2: fix decoder cannot convert float to u64 (fixes #25426)
- os.filelock: fix unreliable locking for existing files (fixes #12059)
- gg: fix draw_rect_empty drawing ugly rectangle (fixes #14491)
- json: fix no error message given when [raw] fails (fixes #19801)
- builtin: fix stdout to be line buffered (fixes #21001)
- builtin: add support for splitting strings into unicode grapheme clusters (fixes #22117)
- builtin: fix free() not releasing memory on maps, arrays, strings (fixes #17416)
- io.fs: add standard library (fixes #24689)
- gg: fix preferred swap interval ignored on some platforms (fixes #20681)
- json2: fix decoding embedded structs (fixes #23354)
- time: Performance Issues with time.now? (fixes #19554)
- builder: sokol: shader v compiler error (fixes #21426)
- gg: gg.update_pixel_data() empty buffer still draws (fixes #10989)
- builtin: a.delete(a.len - 1) runs very inefficiently. Causes segmentation fault on armv7 (router)
(fixes #11150) - toml: cannot decode array of tables (fixes #22633)
- json2: x.json2 can't encode struct with shared data (fixes #25610)
- crypto: Tests fail for vlib/x/crypto/mldsa/usage_test.v (fixes #26827)
- sync: OS's behave differently in runtime concurrency locks (fixes #19376)
- crypto: argon2 (fixes #24389)
- gg: Image loading with stbi+gfx not working properly (Throwing unhandled exception) (fixes #16670)
- json: Possible bad transcription of struct to JSON - indentation of member of type structure
without given name (fixes #20600) - os: std_output / std_error is not always captured as expected (fixes #21410)
- Missing sokol.html page on modules.vlang.io (fixes #25403)
- gg: background image doesn't work (fixes #17815)
- flag: Params in Flag module return Option type (fixes #19235)
- flag: repeated int option in a single argument does not work (fixes #25362)
- cli: add command alias support (fixes #19136)
- io: fix BufferedReader.read_line undocumented behavior on new line characters (fixes #18751)
- builder: fix MSVC failing to compile thirdparty libraries with -m32 after -m64 (fixes #9151)
- sync: fix waitgroup behaving differently from Go (fixes #6870)
- os: fix using spawn with os.execute inside a thread causing runtime error (fixes #25721)
- json: document @[omitempty] and @[raw] attributes (fixes #20121)
- io: fix using io.read_all on a SSLConn giving a strange error (fixes #16557)
- flag: include default values of options in program usage printout (fixes #22977)
- sync: fix read from closed channel behavior as in Go (fixes #26796)
- builtin: optimize array modifiers to follow slice rules and avoid unnecessary memcpy (fixes
#11223) - os: fix problems executing programs (fixes #14486)
- sync: fix LIFO channel select order in sequential functions (fixes #18553)
- sokol: fix numpad arrow keys not returning correct values (fixes #15775)
- toml: fix cannot decode tables into maps (fixes #22634)
- sokol: fix issue with sokol and stbi opening images (fixes #22064)
- os: fix os.read_lines panic from int cast overflow (fixes #15908)
- gg: add texture filtering controls for pixel-perfect rendering (fixes #24934)
- os: allow using
osconstants without importingosin vsh scripts (fixes #17280) - crypto.aes: fix vulnerability to cache-timing attacks (fixes #23791)
- x.json2: fix @[omitempty] not skipping empty arrays, nil pointers and empty maps (fixes #26908)
- x.json2: fix @[raw] decode stripping inter-token whitespace (fixes #26910)
- x.json2: speed up decode[t] on small nested structs (fixes #26911)
- term: add termui keyboard and mouse keyup event detection (fixes #20440)
- builtin: fix two dimensional array with f64 elements cannot store large values (fixes #17736)
- sokol: add vplayground feature to print out graphics (fixes #19857)
- os: fix builder error unc path does not exist (fixes #24180)
- sokol: fix gg.draw_text text corruption with font size and long string on mac (fixes #20457)
- sokol: fix fontstash freetype compiler bug (fixes #17376)
- os: provide default font location in addition to os default (fixes #25068)
- sokol: fix gg .char event inconsistency (fixes #26024)
- x.json2: fix encoder omitting _type discriminator field for sumtype values (fixes #26904)
- x.json2: fix @[json_as_number] enum attribute silently ignored on encode (fixes #26906)
- x.json2: fix f64 encode-decode round-trip not bit-exact (fixes #26909)
- os: fix notify polling on default backend (fixes #26225)
- builtin: fix runtime.nr_jobs assert without VJOBS env variable (fixes #26798)
- os: fix win_spawn_process with paths containing spaces (fixes #18812)
- sokol: fix gg unable to prevent resize (fixes #20099)
- x.json2: fix @[json_null] field attribute ignored on encode (fixes #26905)
- time: fix
time.Time{}value is wrong? (fixes #25346) - json: fix json.decode does not parse time into Struct (fixes #15610)
- x.json2: fix x.json2: encoder emits embedded-struct fields out of declaration order, breaking
byte-for-byte round-trip (fixes #26907) - builtin: fix [ARM64] - failed to build (fixes #26267)
- io: fix BufferedReader.read_line description is misleading (fixes #24667)
- x.json2: fix Module x.json2 fails to compile decoding to a type with references. (fixes #25614)
- thirdparty: fix Cross-compiling from amd64 to arm64 double definition C error (fixes #26534)
- time: fix time.Time is_zero method (fixes #24765)
- sokol: fix C error when running
ggunder Wayland (fixes #18030) - x.json2: fix Batch test failed file collection (fixes #26949)
- Enable ALL_INTERIOR_POINTERS for bundled libgc; drop toml.ast_to_any GC wrap (#27007)
- os: remove warning for unused variable in JS implementation (#27028)
- builtin: remove useless test for array (#27027)
- rand: fix warnings for unused variables in JS implementation (#27026)
- os: fix unused variable in sleeping JS implementation (#27035)
- x.async: add structured concurrency helpers (#27029)
- Remove unused variables (#27047)
- thirdparty.mbedtls: apply upstream fix for a TLS 1.2 client regression (#27091)
- crypto.sha3: fix aliasing in write() (#27101)
- encoding.cbor: add CBOR (RFC 8949) module (#27018)
- strconv: fix atou64 silently wrapping on overflow (#27102) (#27105)
- term: remove extra spaces sent to methods in ok_message(), fail_message(), and warn_message()
(#27128) - cli: drop trailing periods and use 'Print' in default help/version/man descriptions (#27123)
- Revert "rand: use the OS CSPRNG for
uuid_v4,uuid_v7,UUIDSessionandulid(#27152)" - stdatomic: Remove unused aarch64_cas functions (#27160)
- hash: add pure V crc64 (#27164)
- hash: pure V adler32, RFC-1950 compliant (#27176)
- gg: mipmap generation when using sokol (#27206)
- gg: draw lines as lines instead of line strips (#27194)
- datatypes: BSTree to_left and to_right fix (#27198)
- thirdparty/libgc: gc.h uses GC_word instead of u64; valid standalone C (#27179) (#27201)
- json: fix builtin___option_ok cast for option decoder (fixes #27103) (#27234)
- x.json2: fix decode/encode regressions (fix #26967) (#27252)
- bitfield: optimizations, corrections to code and docs (#27289)
- crypto: add hkdf (#27315)
- builtin: guard array push len panics (#27335)
- regex.pcre: small fixes (#27341)
- builtin: add opt-in heap allocation hooks (-d track_heap) (#27357)
- builtin: fix track_heap cross C generation (#27367)
- encoding.hex: cleaner code, options for encode (#27378)
- builtin: preserve array capacity when deleting elements (#27419)
- flag: fix help text generation for xdocs containing colons (#27454)
- builtin: speed up single element array push (
a << x), fixes #27468 (#27470) - builtin: add closure lifetime reclamation (#27483)
- builtin: skip heap allocation for zero-capacity arrays (#27487) (#27500)
- async: add bounded pool, periodic, and group helpers (#27524)
- sync: fix ordering in Once and ManyTimes -- store count after f() completes (#27490)
- encoding.cbor: build option payloads via comptime
$zero(field.typ.payload_type)(#27536) - x.json2: decode option fields via comptime
$zero/$newtype accessors (#27535) - crypto: document bcrypt, scrypt and pbkdf2 in the README (#27521)
- strconv: add buffer decimal writers (#27573)
- builtin: fix compiling with tcc showing v_stable_sort for all frames (#27417)
- gg: fix X11 C aliases for gg import (#27586)
- gg: add draw_rounded_rect_border function (#27605)
- time: add unix_now(), the cheapest wall-clock read (seconds, UTC) (#27641)
- time: allocation-free HTTP-date writers: write_http_header + incremental update_http_header
(#27639) - toml: handle comments in nested array tables (#27693)
- bitfield: add way to convert back into byte array (#27670)
- x.multiwindow/gg: add opt-in native multi-window support (#27690)
- x.multiwindow/gg: complete native event coverage part2 (#27711)
Web
- vweb: fix maps in applications not working properly (fixes #18985)
- vweb: fix print_backtrace_skipping_top_frames_tcc backtrace (fixes #15094)
- vweb: fix builder error with orm module (fixes #15571)
- vweb: path is mixed case, return 404 (fixes #15075)
- fix(fasthttp): rearm keep-alive poll events (#27585)
- veb: fix picoev chunked request body handling (fixes #25451)
- net.mbedtls: fix TLS 1.3 session ticket handling in ssl read (fixes #25760)
- net: fix address autofree and addr len handling (fixes #20635)
- veb: fix memory leak (fixes #22141)
- veb: add creation and serving of compressed files handling (fixes #26139)
- net.http: fix http.get panics with ssl read timeout (fixes #23719)
- net.http: add option to bypass https certificate check (fixes #20958)
- net.http: fix got symbols instead response body (fixes #14746)
- veb: fix @import gives
invalid characterbut shouldundefined ident(fixes #23623) - veb: add middleware per route path and http method combination (fixes #24368)
- net.html: unmatched closing tag breaks dom parsing (fixes #26619)
- vcreate: migrate vweb model to veb (#26745)
- veb: support graceful shutdown for veb server (fixes #25655)
- net: fix http.server and net.conn concurrency issues (fixes #18396)
- veb: filter mime types for enable_static_* (fixes #26038)
- net.mbedtls: fix ssl compile error with tcc on arm macs (fixes #19118)
- net.http: fix server different behavior between prod and non-prod (fixes #20899)
- veb: add ssl support (fixes #23663)
- net: concurrent processing of large response bodies results in
substr(start, length) out of bounds(fixes #18094) - wasm: backend indexing issue (fixes #21997)
- veb: context.set_header not working as expected for .content-type (fixes #24016)
- builder: fix mbedtls build error when using nix (fixes #20518)
- net.websocket: add proxy support to websocket client (fixes #21273)
- veb: fix memory leak (fixes #25518)
- veb: fix before_request not triggered after adding middleware (fixes #20757)
- veb: fix statichandler and ctx.file() not functioning properly (fixes #23596)
- net.http: fix http.get only returning after timeout (fixes #20283)
- net.smtp: add configurable timeout when sending mails (fixes #23287)
- veb: fix middleware access to app struct and resources (fixes #24372)
- net.smtp: separate config from client struct (fixes #19928)
- net.urllib: fix parsing of consecutive slashes in URLs (fixes #22958)
- net.mbedtls: fix websocket bug (fixes #26662)
- Fix v new --web creating vweb projects instead of veb (fixes #24270)
- net.smtp: fix attachments not fully conforming for all mail clients (fixes #23488)
- all: should rename picohttpparser to pico_http_parser in vlib? (fixes #16151)
- veb: Compile error
unknown type veb.Server(fixes #26811) - veb: fix response being sent twice over one connection (fixes #23715)
- net.ssl: fix mbedtls http.get_text returning nothing (fixes #23717)
- net: fix
UdpConn.set_read_timeoutnot working forUdpConn.read()(fixes #26799) - wasm: fix wasm backend browser issue (fixes #26833)
- veb: fix CSRF module (fixes #26871)
- net: fix socket bug (fixes #15026)
- net.ssl: fix cannot get whole response body on concurrent requests with -prod (fixes #20962)
- net.http: fix random error in download_file_with_progress (fixes #24917)
- veb: fix nested structure c compilation error (fixes #25415)
- veb: fix statichandler not working with veb.controller (fixes #24195)
- net.smtp: add support for sending both HTML and text emails (multipart/alternative) (fixes #23288)
- net.http: fix long-running HTTP polling program encountering socket error (fixes #24302)
- doc: update "building a simple web blog with veb" tutorial for fetching data with ORM (fixes
#24708) - net: fix veb test for listening on both IPv4 and IPv6 by default (fixes #26016)
- net.ssl: fix C error on Mac M1 when compiling pure V code (fixes #21820)
- veb: fix instantiating a SSE with vweb (fixes #17407)
- veb: fix timeout when receiving multipart/formdata request from a browser (fixes #24975)
- veb: add parallel event loop (fixes #22134)
- veb: fix long process started from app hogging CPU (fixes #26742)
- net.http: fix download_file_with_progress in net.http module (fixes #25002)
- net: fix net.html parser ignoring inner tags in tag.content (fixes #14138)
- net: add udp multicast support (fixes #25450)
- net.http: fix post requests not working (fixes #24226)
- net.http: fix when i run v download or v searh or v install it always fails (fixes #24553)
- net.http: fix
net.http.Request.proxyis public but cannot be interpolated becauseHttpProxyis
private and has no explicitstr()(fixes #26938) - veb: fix vweb handlers must be written in order to avoid being overwritten by "'/:path..."
handlers (fixes #13277) - compress: fix veb: unable to compile with clang (fixes #26936)
- veb: fix veb: segfault when serving static files (fixes #26939)
- wasm: fix wasm backend as a shared library (fixes #17621)
- net.websocket: treat zero-byte frame-header reads as peer close (#26956)
- net.websocket: add server on_attached hook after handshake attach (#26955)
- fasthttp: generalize kqueue implementation to the bsd os family (#26984)
- fasthttp: add BSD support in README (#26987)
- net.http: fix HEAD/1xx/204/304 responses hanging or erroring on Content-Length (#27000)
- Add an S3-compatible client and a scheme-handler dispatch in http.fetch (#27008)
- net: stop using vlib-specific symbols in C. defenitions in
netmodule (#27052) - veb: support reusable takeover connections (#27050)
- net.smtp: strip display name from MAIL FROM / RCPT TO envelope addresses (#27072)
- net.http: support Schannel validation modes (#27092)
- net: pure-V RFC 5952 IPv6 canonicalization, fixes Ip6.str() emitting deprecated ::a.b.c.d on libc
(fix #27095) (#27096) - net.http.file: fix unused parameter notice, when using
v -http(#27185) - net.http: make Header.get/get_custom return Option instead of Result (fix #27177) (#27214)
- fasthttp,veb: fix sendfile() failing on large static files (fix #27080) (#27223)
- net.ssl: add ALPN protocol support to mbedtls and openssl backends (#27343)
- net.http: add HPACK header compression (RFC 7541) for HTTP/2 (#27353)
- net.http: add HTTP/2 frame codec (RFC 7540) (#27356)
- net.http: add synchronous HTTP/2 client connection (H2Conn) (#27361)
- net.http: negotiate HTTP/2 in fetch via ALPN (opt-in) (#27362)
- net.http: add TLS termination to Server (HTTPS support) (#27373)
- net.http: stream response callbacks and stop limits over HTTP/2 (#27369)
- net.http: add server-side HTTP/2 (ALPN + h2 frame demux) (#27382)
- net.http: enable HTTP/2 by default for https requests (#27384)
- net.http: fix server_tls h2-negotiation test for default-on HTTP/2 (#27393)
- net.http: fix TLS server listener shutdown (#27429)
- net: fix creating UNIX stream sockets through net.new_tcp_socket/1 (#27449)
- wasm: add browser stderr builtins (#27452)
- net.http: add connection-pooling Transport with HTTP/1.1 keep-alive (#27412)
- net: record bytes written before a write error (last_write_sent) (#27460)
- net.http: track h2 server connections for idle shutdown once, not per frame (#27435)
- net.http: fix TLS server read/handshake timeouts and idle-shutdown fd race (#27434)
- net.http: fix four h2 server correctness gaps found in #27435 review (#27469)
- wasm: resolve fixed-array
.leninstead of aborting with "could not find field len" (#27518) - wasm: make integer/string builtins available to the
-os browsertarget (#27517) - net.http: fix TLS server close_idle fd-reuse race and remove dead set_read_timeout (#27542)
- net.http: run TLS server handshakes on worker threads (#27433 item 3) (#27552)
- wasm: add table & element sections, call_indirect, and function values (#27532)
- v.gen.wasm: floor-safe wasm-opt/wasm-validate feature allowlist + memory-contract test (#27526)
- wasm: emit a clean error for scalar
?T/!Treturns instead of an internal ICE (#27516) - ci: add h2spec RFC 9113/7541 conformance gate for net.http HTTP/2 (#27563)
- net.openssl: fix double-free on shutdown() (#27482)
- veb: fall back to peer IP from client fd (#27568)
- net.http: add multiplexed HTTP/2 client connection (H2MuxConn) (#27413)
- net.http,net.mbedtls: harden TLS parallel-handshake + idempotent-shutdown test guards (#27559)
- net.http: validate HTTP/2 server request headers (RFC 9113 §8.1.2) (#27569)
- net.http: HTTP/2 server stream state machine (RFC 9113 §5.1/§6.1/§6.4) (#27589)
- net.http: h2 server — close the final 7 h2spec conformance gaps (146/146) (#27627)
- veb: preserve middleware response context (#27698)
- net.http: pool multiplexed HTTP/2 client connections in Transport (pooling Phase 3) (#27643)
- net: avoid BSD fasthttp loopback deadlock (#27723)
ORM
- Skip sanitize check of orm_transaction_test.v (#26718)
- Add multi-tenant filtering support (fixes #26517)
- Fix C compilation error (fixes #26224)
- Fix DB changes table name to lowercase (fixes #24036)
- Fix sqlite with pragma foreign_keys=on error (fixes #11181)
- Support more advanced postgres types (fixes #18843)
- Fix errors and panics when using anonymous structs (fixes #23299)
- Fix where field == nil not working (fixes #15304)
- Fix using a generic struct leads to cgen error (fixes #18788)
- Ignores columns with type time.Duration (fixes #23033)
- Postgresql backend: invalid syntax for inserting default values (fixes #18319)
- Selecting struct with ORM does not get deeply nested
struct_field []arr @[fkey: 'some_id']
(fixes #23340) - Fix tcc undefined symbol error with orm enums (fixes #19818)
- Fix cannot directly convert []string to union type (fixes #25851)
- Fix cgen error with v.ast.IfExpr not supported (fixes #25877)
- Add h2database support (fixes #22797)
- Add rails style updates for struct (fixes #22531)
- Fix c compilation error (fixes #25882)
- Table structures support joint primary keys (fixes #25579)
- Fix inserting many-to-many relation (fixes #24832)
- Add function-based query support (fixes #24931)
- Fix cgen issue when updating embedded structs (fixes #23023)
- Add dynamic select/update syntax support (fixes #26222)
- Add upsert SQL method (fixes #23957)
- Fix -prod transformations causes ORM to emit invalid queries (fixes #25983)
- Fixdynamic query-data guard folding (#27114)
- Add bulk insert/update support with CASE WHEN batch updates, MySQL time conversion, and
checker/codegen validation (#27132) - Support OR in dynamic where blocks (#27336)
- Add DataScope support for per-instance request-level filtering (#27324)
- Deprecate global tenant filter APIs, deadline 2027-06-08 (#27389)
- Add execute method to Connection interface for raw SQL queries (#27416)
- Fix O(n²) late-used-fn-bodies pass (7-10x faster transform) (#27663)
Database drivers
- db.mssql: fix builder error when db.mssql is imported (fixes #19141)
- db.mssql: avoid .sort() in get_conn_str to unbreak tcc CI (#27255)
- db.mysql: fix does not allow retrieving of statement results (fixes #17957)
- db.sqlite: add tables, columns, schema, db_size methods (#26791)
- db: support and cooperate with pool to implement a connection pool (fixes #26500)
- db.mysql: fix mysql.h not found on RHEL 9 (fixes #14952)
- db.sqlite: fix -prod with gcc causing program issues (fixes #24800)
- db.mysql: fix real_query to return proper mysql error (fixes #18059)
- db: db.pg and db.mysql consistency (fixes #24035)
- db.mysql: fix malformed error messages from real_query failing to encode to json (fixes #19842)
- db.sqlite: fix orm dynamic select with multiple conditions and in operator (fixes #26913)
- db.sqlite: fix no such file or directory error (fixes #26887)
- db.mysql: fix Seg fault on Mysql package if app.db.connect() is not at the right place (fixes
#14287) - db: fix V support to Microsoft SQL Server or to ODBC connection (fixes #4531)
- db.sqlite: fix [ORM] vfs_lowlevel.c.v:22: unexpected dot . where type is expected (fixes #26889)
- db.mysql: add Config.ssl_mode to control MYSQL_OPT_SSL_MODE (fix #27139) (#27215)
- db.pg: thread-safe pool-backed DB, Tx, and Conn (Go-style API) (#27265)
- db.mysql: support multi-statement queries (fixes #18061, #18063) (#27271)
- db.pg: decode TIMESTAMPTZ / fractional-second timestamps into time.Time (fix #27556) (#27561)
- db: add common driver and pg SSL config (#27628)
C backend
- C compilation error when using generics with multiple instantiat… (#26786)
- Preserve interface arrays as single varargs (#26771)
- Add coutput regression test for empty .attrs inline init (#27274)
- Fix sumtype assignment copy semantics (fixes #25839)
- Fix enum explicit size for tcc and gcc (fixes #25041)
- Fix autofree does not call free on unassigned returned struct value (fixes #13821)
- Fix modifying a struct pointer by passing it as mut to a function (fixes #17788)
- Fix incorrect f64 -> u64 conversions (fixes #20944)
- Fix C error while compiling using -autofree with the V UI library (fixes #18952)
- Fix C error when passing expression directly as argument instead of variable (fixes #19152)
- Fix -autofree C compiler error (fixes #23527)
- Import submodule of third-party module (fixes #14548)
- Fix error when trying to convey a variadic argument (fixes #22049)
- Fix V test coverage running against lilly lib results in C generation error (fixes #24842)
- Fix
could not find methodfor compiling a veb program with an app alias (fixes #25253) - Fix conflicting types for 'gc_enable' (fixes #24095)
- Fix autofree compile error '{' expected (fixes #25366)
- Fix removing code while executing in hot code mode may cause Segmentation fault (fixes #6669)
- Fix invalid C code generated (fixes #17200)
- Add sparc64 arch (#26730)
- Don't clone array fn args in struct field init, add test (#26709)
- Fix generic closure type parameter substitution (fixes #26629) (#26671)
- Fix C error array of incomplete type for fixed-size optional array (#26780)
- Avoid builtin print handling for user print fns (#26781)
- Allow embedded interface upcasts (#26772)
- Stop treating every .m as an Objective-C import (#26794)
- Fix short-circuit evaluation in asserts with || and && (#26777) (#26784)
- Fix veb.context vs x.json2.any (fixes #23777)
- Fix string | charptr sum type with unsafe{nil} (fixes #25994)
- Fix live programs hang if a [live] function calls another (fixes #15412)
- Fix if-guard struct copy for [heap] vars (fixes #17825)
- Fix recursive anonymous functions and closures (fixes #16349)
- Fix bad function argument name causes compilation error (fixes #26746)
- Fix function parameter mismatch (fixes #26760)
- Fix error for value := &(m[key]) with map values (fixes #15115)
- Fix -g incorrect line number in backtrace (fixes #15781)
- Fix generics gets wrong about types (fixes #25852)
- Fix interface with method str() returned as option (fixes #25931)
- Fix possible memory allocation issue (fixes #26758)
- Cannot use interface b as interface a, although interface b embeds interface a (fixes #18864)
- When calling dump() on a array with a type containing multiple types outputs wrong values and
breaks execution (fixes #24154) - Dynamic string interpolation format specifiers (fixes #19077)
- X__json2__Any_free cgen error (fixes #19289)
- Error assignment from incompatible pointer type (fixes #18977)
- C error instead of clean compile or V error (fixes #24462)
- Returned value differs from value to return (fixes #26346)
- V compiler bug: pointer-based sumtype heap allocation creates dangling pointers (fixes #26657)
- Builder error (fixes #14819)
- Keep fn calling order if subsequent expression needs to use a temporary variable (fixes #26134)
- Builder error: C error. This should never happen (fixes #14859)
- Referenced values are displayed incorrectly (fixes #18440)
- Unable to debug using GDB or LLDB (fixes #14904)
- C error found: /box/code.v:14: error: cannot convert 'struct _option_main__Foo_T_int_ptr' to
'struct main__Foo_T_int *' (fixes #26425) - Initializing struct in channel bug (fixes #10342)
- Compiling issue (fixes #16832)
- The gc makes the apps run slow at first (fixes #24827)
- Allocating structs on the heap is not efficient (fixes #16575)
- Install from source failed on macOs X Sierra (fixes #16961)
- Incorrect Auto De-referencing of &net.TcpConn in Map Access (fixes #21067)
- Error that occures when using gcc, clang or msvc but not tcc (fixes #25711)
- Struct pointer comparison with nil causes segfault (fixes #26370)
- Int refs interpolate strangely into strings (mut as hex, immutable as addresses) (fixes #15405)
- C error while compiling code on Playground (fixes #17809)
- Types are not respected with -no-builtin (fixes #21264)
- Generic function pointer returns wrong output (fixes #21499)
- Cant compile free standing type well can it (fixes #21934)
- C error, array: initializing an array of list into inside a struct using index (fixes #26372)
- Fix c error in conditional attribution (fixes #26375)
- Fix not finding structure defined in a separate file (fixes #15724)
- Fix wrapping a generic in a struct causing builder error (fixes #22250)
- Fix initializer element is not a compile-time constant (fixes #25684)
- Fix showing the line where interface is used as generic type (fixes #23004)
- Fix c error while migrating vpm to veb (fixes #24044)
- Fix dump() cross-reference field printing recursively (fixes #13370)
- Fix atomic int not respected by tcc (fixes #15365)
- Add switch to turn on generation of boilerplate in c output (fixes #17089)
- Fix undefined behavior signaled by clang sanitizer (fixes #21525)
- Fix incompatible types for redefinition of memcpy (fixes #14458)
- Fix asm volatile with no instructions generating invalid c code (fixes #26719)
- Fix duplicate code generated when using interface from a package (fixes #18326)
- Fix function pointer expected error (fixes #22256)
- Fix referencing an option creating incorrect option (fixes #26160)
- Fix incorrect comptime return with $if/$else (fixes #17262)
- Fix plugin creation not being called properly (fixes #20047)
- Fix two functions returning generic type with one casted and one not (fixes #18077)
- Fix custom print function with -no-builtin (fixes #26216)
- Fix wrong shift (fixes #26378)
- Optimize string concatenation chains (fixes #276)
- Fix compilation with -freestanding missing main (fixes #20227)
- Fix c compilation error using type parameters in function fields (fixes #26629)
- Fix runtime invalid memory access passing decomposed variadic array (fixes #24757)
- Fix asan complaint about comptime_map_it_test (fixes #25765)
- Fix c compilation issue with quoted items in xdoc attrs (fixes #23045)
- Fix static array unknown type c issue (fixes #24164)
- Assigning C.var to var triggers a compiler bug. (fixes #15971)
- Variable declarations after
continue <label>cause builder error with-cc gcc -cstrict(fixes
#19973) - C error when asserting value from
sql db { select from...}(fixes #23345) - C compiler error (fixes #24993)
- Compiler fails in submodule definitions (fixes #24649)
- Generic funtion infers base type for pointers (fixes #25208)
- Data read is corrupted, depending on the order of struct embedding (fixes #26788)
- V panic by sync__pool__process_in_thread (fixes #26826)
- Cgen error when changing the signature of a function with a specialized generic struct parameter,
that is not called (fixes #23014) - Can't spread rlock-ed shared variable (fixes #17273)
- 'Handling' assert failure (fixes #7868)
- (bug report summary) Builder Error (fixes #17430)
- Incompatible redefinition of 'size_t' (fixes #21477)
- Can't compile generated C (fixes #22762)
- Not having
[console]makes application hang (fixes #11277) - Instantiating struct with global on heap causes c error (fixes #22970)
- C code compiling error (fixes #21939)
- Cgen doesn't create temporaries for arguments with multiple references (fixes #22749)
- Building with MSVC Results in Error with Mutable Static Strings (fixes #25541)
- Wrong compile assigment on termux (fixes #17038)
- Str.bytes() bug (fixes #18243)
- Failed to build with make -clang command (fixes #18463)
- Using non-ref
app, while vweb expects ref (fixes #20826) - Use freestanding mode, but encounter incompatible size_t redefinition error by C (fixes #23228)
- Unhandled Exception when setting const to function that returns error or struct (fixes #23555)
- Fix global string array not being modifiable in function (fixes #17377)
- Fix os.File.seek() not generating correct C code for mode parameter (fixes #12003)
- Fix memory leak when using closures (fixes #21019)
- Fix c error when inserting struct reference into map that doesn't expect one (fixes #26860)
- Remove all #includes from vlib and manually define function signatures (fixes #304)
- Fix array.repeat(n) not deep-copying interfaces (fixes #14705)
- Fix c error on build with string interpolation of struct with context interface (fixes #15223)
- Fix circular printing not showing item count in array (fixes #21689)
- Fix segmentation fault with json in struct (fixes #13492)
- Fix sort_with_compare not working correctly (fixes #19575)
- Fix wrong array checking when using interface and multiple type bindings in generics (fixes
#26004) - Fix for loop with sleep and dump using more memory (fixes #25378)
- Fix program hang in
forloop with u8 boundary at 255 (fixes #25379) - Fix using
debug.dump_callstack()with-d callstackcausing a C error (fixes #23323) - Fix compilation error with strings.Builder alias as array (fixes #26767)
- Fix u64 from C losing high part (fixes #14783)
- Fix string interpolation of generic structs and methods returning generic struct references (fixes
#16340) - Fix fixed array with option dynamic elem not compiling (fixes #25460)
- Fix inline
ifexpression cannot return a closure (fixes #26595) - Fix weird behavior on iterating an array (fixes #26874)
- Fix appending reference to array of sumtype references generating new memory address (fixes
#14832) - Enable referencing C global variables from V code (fixes #22691)
- Fix cgen error for generic function type inferred implicitly (fixes #25388)
- Fix use of float types as vweb function parameters leading to c error (fixes #15220)
- Fix build hang until timeout when using shared object (fixes #18915)
- Fix
bad addresserror when usingos.execve()(fixes #26007) - Fix local headers not found (fixes #14706)
- Fix c error from a name shadow using the same name as a C function in unsafe (fixes #17831)
- Fix nested
ifinif var := foo()broken with-prod(fixes #26006) - Add runtime guards for unsafe math operations (fixes #4261)
- Fix nesting of fixed arrays (fixes #16393)
- Fix cgen error with
-cstrict -cc clangand defer in match branch (fixes #19092) - Fix
dumpmodifying decoded generic linked list when struct is @[heap] (fixes #25731) - Fix println strange behavior in struct methods leading to runtime error (fixes #17629)
- Fix c compiler error when using datatypes.LinkedList[&SomeType] (fixes #25214)
- Fix interface deep embedded fields bug (fixes #17667)
- Fix memory leak when inserting random value into struct reference (fixes #18555)
- Fix memory leaks when using
if var := some_map[type](fixes #19454) - Fix c error while compiling freestanding v program (fixes #25567)
- Fix c backend bug on tuple reassign to struct local (fixes #26594)
- Fix c error when building gui library (fixes #26861)
- Fix v generated shared .so crash on dlclose (fixes #15657)
- Fix runtime memory access for sumtype field access without smartcast (fixes #26297)
- Fix json.encode failing under some circumstances (fixes #15840)
- Fix array of empty interface push function c error (fixes #23013)
- Fix runtime error with invalid memory access regression (fixes #26875)
- Optimize string interpolation performance (fixes #7516)
- Fix c transpilation type bug (fixes #10802)
- Fix json voidptr is not struct error (fixes #13491)
- Fix generic methods passing lambda needing type hint (fixes #26259)
- Fix pointer expected error (fixes #26824)
- Fix invalid memory access when smart casting an alias fntype (fixes #17799)
- Add support for array as a map key (fixes #22992)
- Fix error related to empty interface (fixes #25872)
- Fix struct or union expected error (fixes #26837)
- Fix ability to modify a struct from another thread when it's already locked (fixes #14851)
- Fix implicit reference when appending to an interface array (fixes #25448)
- Fix optional val return in map got wrong value (fixes #26239)
- Fix println(struct) unhandled exception 0xc00000fd (fixes #19178)
- Fix -(-2) translated into --2 (fixes #26813)
- Fix json.decode for apidetails map in array with sumtype (fixes #23883)
- Fix incorrect casting of pointers to interface or sumtype (fixes #24309)
- Fix heap struct copy when accessing via an array in if-guard (fixes #10429)
- Fix $embed_file not compiling on win10 with microsoft compiler (fixes #12035)
- Fix autofree memory leak on reused assignment (fixes #18408)
- Fix invalid memory access when iterating on interface types in an array (fixes #26882)
- Fix comptime $for f in t.fields over generic struct with ?[]t / ?[n]t fields (fixes #26903)
- Fix generic-method symbol mangler strips pointer indirection for []&t (fixes #26892)
- Fix comptime passing ?t field to generic uses wrong payload type (fixes #26900)
- Fix v allocating too much memory for generic method returning option (fixes #20276)
- Fix member to c struct giving field not found error (fixes #24102)
- Fix invalid memory access printing union containing interface member (fixes #25953)
- Fix segfault or error c code when shared variable initialized (fixes #26379)
- Fix hot reload failure when using time.now() in interpolation (fixes #19456)
- Fix v-ui binding issues with sumtype ptr cast payload (fixes #22886)
- Fix program freezing with tcc but working with msvc (fixes #23793)
- Fix c compilation error in nested array declaration (fixes #23818)
- Fix flag -live with bug (fixes #14300)
- Fix json.decode on a sum type with a struct variant, results in incorrect data when the input json
does not have a _type field (fixes #14058) - Fix Cannot concatenate chars or runes into strings (fixes #17202)
- Fix Nested aggregate temporaries can be collected too early with Boehm in -prod (fixes #26945)
- Fix usecache will build modules with different sumtype _typ define (fixes #25116)
- Fix C errors with generic fn type (fixes #26156)
- Fix Compile error on alpine, /v/thirdparty/zip/ related problem (fixes #26963)
- Fix Debugger not updating variable values correctly during array iteration (fixes #17436)
- Fix Shared objects make function parameters shared (fixes #11957)
- Fix C error with interface combination (fixes #25982)
- Fix "builder error / C error. This should never happen.", when calling
C.xcb_setup_roots_iterator() from XCB library (fixes #16906) - Fix The line of code
println(json.encode_pretty(data))will trigger a compilation error. (fixes
#26611) - Fix cast between pointer and integer of different size with a sum type (fixes #14492)
- As cast: cannot cast
v.ast.FnTypetov.ast.Struct(fixes #26944) - Fix support cast expression in dynamic update blocks (fixes #26957)
- Fix C compiler error with arrays.filter_indexed (fixes #26959)
- Fix Fatal error of compilation generic structs (fixes #26675)
- Scope fix (fixes #26891)
- Keep nested aggregate temporaries alive under Boehm GC (#26946)
- Fix generic if-guard string interpolation (#27061)
- Resolve generic sumtype match method calls (#27068)
- Preserve option fn concrete type names (#27085)"
- Preserve option fn concrete type names (#27085)"
- Allow comparison between Option[T] and
noneliteral (#27097) - Pointer compare instead of deep struct_eq when one side is &lvalue (fixes #27089)
- Fix generic closure result expression temps (#27070)
- Avoid or-block err name collision (#27060)
- Fix generic sort comparator reusing wrong body across instantiations (fixes #27121)
- Fix NetBSD build by including system stdio headers (fix #27190) (#27211)
- Fix
$for method in field.methodsdispatch (fix #27076) (#27226) - Fix
IErrorassignment to?IErrorfield (fix #26973) (#27227) - Call GC_set_pages_executable(0) for shared libs on all OSes (fix #27165) (#27230)
- Fix string interpolation of
for mut item in []string(fix #27122) (#27232) - Allow consts referencing each other inside anon fn bodies (fix #27087) (#27224)
- Guard C extern fn decls with #ifndef to coexist with macros (fix #27098) (#27236)
- Fix C error on
return $tmpl(...)when fn returns Result/Option (fix #27094) (#27235) - Resolve generic map types in concrete contexts (#27058)
- Guard test coverage counter file creation (#27075)
- Fix invalid C for nested
orblock whose last expr is!voidcall (#27012) (#27256) - Use c_fn_name for fn-variable signatures and closure captures (fix #27109) (#27259)
- Fix returning ?T/!T into ?Alias/!Alias and container variants (fix #27056) (#27264)
- Emit GC_allow_register_threads() in
_vinit(fixes #27178) - Keep interface typeof independent of builtin string (#26812)
- Heap-wrap interface-to-pointer-interface
ascasts (fixes #25785) (#27273) - Fix bound interface method values (#27293)
- Clone comptime selector assignments (#27295)
- Allow chained type aliases (fix #27055) (#27296)
- Fix shared alias field access (#27313)
- Fix C codegen for generic chan pop via if-guard bound var (#27205) (#27337)
- Fix heap struct init hoist positions (#27349)
- Fix fixed array return via local (#27350)
- Use union tag for C union keepalive helpers (#27351)
- Unwrap option smartcast for interface casts (#27352)
- Fix fixed array expression field assignment (fixes #27360) (#27359)
- Add deref for aliased reference types using mut captures (#27377)
- Fix autofree temp args in map expressions (#27321)
- Unwrap option sumtype as casts (#27431)
- Fix option sumtype if expr struct init (#27443)
- Fix fixed array match return temps (#27444)
- Prevent main propagation panic fallthrough (#27462)
- Match aliases by runtime tag (#27461)
- Snapshot Boehm scope GC pins on the stack, fixes #27467 (#27471)
- Fix comparing two option-of-struct values (
?Struct == ?Struct) (#27496) - Fix
#linedirective glued to expression in array literal branches (#27495) (#27497) - Fix bogus generic suffix on alias-of-generic method calls (#27465) (#27505)
- Fix fixed-array
if/matchreturn mixing a call and a literal branch (#27457) (#27504) - Fix
as/ison option-type sumtype variant using wrong union member (#27478) (#27499) - Fix sumtype string-rvalue cast, ?&T == nil unwrap, and generic default interface field (#27551)
- Lower Boehm GC free-space divisor to 1 for the opt modes (fix #27555) (#27560)
- Stabilize auxiliary type symbol hashes (#27570)
- Emit interface type-table index as a real symbol under
-usecache(fix undefined
_IError_None___index) (#27381) - Include stdio for GCC MinGW prelude (#27577)
- Fix
go exprhandle referencing undeclaredthread__tN(#27379) - Fix heap struct init in if expression (#27659)
- Fix generic multi-return interface cast with stale checker types (#27610)
- Fix ownership cgen, or-expr/multi-return, markused dispatch; regex group flags (#27662)
- Fix inlined tmpl scope type reuse (#27687)
- Fix invalid C for
&reference of fixed array alias (#27665) - Include Boehm header before spawn wrappers (#27692)
- Simplify enum from_string helper (#27699)
- Prefer exact alias tags in sumtype match (#27719)
- Fix option sumtype match and static method refs (#27747)
JavaScript backend
- js: fix backend not supporting [export] attribute (fixes #11375)
- js: fix array.get index out of range panic (fixes #11379)
- js: Backend / unwraping Javascript Objects / TypeError: e.stack.contains is not a function (fixes
#10393) - js: add output file for js_browser_builtin_print_regression.v (#26847)
- js: fix tos functions support (fixes #26304)
- js: fix TypeError with in operator in map (fixes #16404)
- js: JS backend errors (fixes #16415)
- Fix optional pointer properties cannot be mutated (fixes #24406)
- Fix js-backend cannot compile life.v (fixes #20667)
- Fix Playground
@LOCATIONand@FILE_LINEinterpolation problems (fixes #23554) - Fix Javascript cross compilation error (fixes #24784)
Comptime
- gen: fix comptime zero/new type expression resolution (#27048)
- comptime: include parent methods in $for on alias types (fixes #25405)
- comptime: add comptime-evaluated functions (fixes #26475)
- comptime: fix mix user defines and system defines (fixes #25176)
- comptime: fix struct comptime remove attrs' quotation mark (fixes #24186)
- comptime: convert some useful functions like dump to comptime fns (fixes #22864)
- comptime: Detailed
attrsfor methods (fixes #19082) - comptime: Unable to take address of constructed method call, but can make a constructed method
call (fixes #16221) - comptime: fix $compile_error to locate the actual error position (fixes #24575)
- comptime: allow only explicit auto-expand of []string in compile-time $for loops (fixes #9278)
- comptime: fix unknown type error when using a generic interface (fixes #20762)
- comptime: add type metadata accessors .pointee_type, .payload_type, .variant_types, plus
$zero(TypeExpr) and $new(TypeExpr) (fixes #26980)
vfmt
- Preserve attribute call syntax in vfmt (#26769)
- Allow conditional selective imports (#26787)
- Fix vfmt breaks the new attributes syntax (fixes #26766)
- Fix v fmt can create uncompilable code (fixes #26035)
- Inline if stmt not strict enough (fixes #14875)
- Array initializers should be indented (fixes #24091)
- Prioritize internal error exit code (5) over format-diff exit codes (#26857)
- Fix inconsistent wrapping of long lines (fixes #16543)
- Fix inconsistent wrapping of lines with + and - (fixes #25992)
- Automatically add imports for vlib modules (fixes #23389)
- Fix format line break for ORM update with multiline function (fixes #25883)
- Fix match with or expressions (fixes #17201)
- Fix format error on types (fixes #25496)
- Fix single-line short if expressions forced to multi-line (fixes #26915)
- Fix
parser: anonymous struct type literal not accepted as a generic type argument (fn[struct { … }](…)) (fixes #26894) - Fix [vfmt] Single-line short if expressions are incorrectly forced to multi-line (fixes #26941)
- Orm fix (fixes #26968)
- Keep enum name when stringifying fixed-array size expressions (#27106)
- Keep trailing comment on array element when next line starts with
.enum_val(fix #27074)
(#27222) - Keep single-line struct init inline inside single-line array literal (#27239)
- Respect VFLAGS preferences (#27305)
- Don't prefix current-module types inside
fntyped struct fields (#27475) (#27506) - Keep first multiline fn parameter (#27600)
Tools
- build: fix tcc error library 'atomic' not found (fixes #18183)
- build: combine the v.c and v_win.c (fixes #4868)
- build: use PGO in -prod (fixes #7024)
- build: add command for generate c project (fixes #19972)
- vsh: cannot use constants from auto-imported modules (fixes #6372)
- editors: push syntax highlighting to vim and neovim (fixes #10321)
- make.bat: bootstrap from v_win.c only (#26779)
- cmd/tools/vsqlite: route dot commands from CLI args to dot_cmd (#26801)
- make: fix building with legacy-support without macports (fixes #24227)
- makev.bat: fix Clang bootstrap on MinGW-targeted LLVM installs (#26978)
- cmd: handle v share API failures (#27598)
- doc: fix changelog formatting (#26713)
- ci: add missing egl dep to sanitized ci (#26712)
- vpm: add commands to link or unlink V projects (fixes #24386)
- vpm: fix installing package from local git repository fails (fixes #21986)
- Add V version manager (fixes #21797)
- vpm: support custom mirrors for package installation (fixes #26217)
- Fix v up removes v and v_old, then fails (fixes #18325)
- cmd/tools: add vsqlite interactive SQLite CLI (#26793)
- vet: warn for confusing regex (fixes #26011)
- ci: fix v-analyzer build in "V Apps and Modules" workflow (#26807)
- repl: mkdir temp folder before chdir to avoid startup failure (#26805)
- cmd/tools: watch flag breaks backend option (fixes #24571)
- cmd/tools: allow specifying the location of the symlink (fixes #25244)
- vvet: assert true, 'multi line string with spaces at the start of the next lines' causes
v vet a.vto fail (fixes #26467) - repl: vlang repl is slow on OSX (fixes #23128)
- ci: fix vtcc int(0x8000_0000) overflow; document discord.v disable (#26858)
- Fix vshare.v test failing due to linkage with clang (fixes #22692)
- vpm: fix contradictory v install behaviour (fixes #16385)
- Fix first line after // vfmt off being replaced (fixes #23629)
- Vdoc incorrectly looks for modules past v.mod (fixes #14224)
- Time recording error in repl. (fixes #24317)
- all: remove !. gitignore rule that interferes with personal exclusions (fixes #24590)
- all: fix vrepl when up/folder
xxx/cmd/toolsis not writable (fixes #10324) - Fix wrong replacing of @ to $ in links in html vweb templates (fixes #11978)
- ci: fix vtcc sed patch — use int(-2147483648) not u32 for shf_private (#26869)
- Rename make.bat to another name (fixes #21497)
- ci: fix release numbering in manual release workflow (fixes #26214)
- benchmark: fix nixos V panic: string.repeat: count is negative: -26 (fixes #10974)
- Fix v doc: cannot generate an HTML documentation of my own project (fixes #9170)
- Fix vdoc does not generate enum description immediately following $if statement (fixes #23338)
- vpm: refuse to overwrite an installed module with uncommitted or unpushed git changes (#27014)
- all: restore .gitignore rule for extensionless binaries (#27019)
- ci: update cross-platform-actions/action to v1.1.0 for BSD CI (#27195)
- vpm: normalize module path on update/remove (fix #27192) (#27210)
- Surface command failures in cmd/tools/fast/fast.v docs upload (fix #27038) (#27237)
- ci: fix vfmt and http redirect failures (#27319)
- Store C error reports as SQLite columns (#27322)
- Store C error report context lines (#27325)
- Store the V source line of a C error in a bug_reports.v_lines column (#27342)
- Fix
v watch runnot reloading on source changes (fix #27463) (#27501) - ci: deploy docs.vlang.io from GitHub Actions (fix #27038) (#27520)
- Fix vdoc dropping the module overview comment when the first symbol also has a doc comment (fixes
#27672) (#27677) - Include build flags and V source in C error bug reports (#27735)
Operating System support
- make: add RegQueryInfoKeyW, RegEnumKeyExW, RegEnumValueW to advapi32.def (fixes #18918)
- build: fix 'this app cannot run on your PC' error (fixes #13795)
- closure: add sparc64 support (#26731)
- ast,pref,genc: bootstrap ppc64 arch (#26743)
- closure: add ppc64 ELFv1 support (#26749)
- build: fix compilation error on Raspberry Pi (fixes #12907)
- properly define stdin, stdout, and stderr for FreeBSD (#26920)
- tcc/bionic: fix unresolved __builtin_bswap16/__builtin_nanf on Termux (fix #27207) (#27277)
- mssql: add macOS support and improve ODBC build detection (fixes #18966)
- Fix parse_file() permanently breaks spawn + os.execute() on macOS (fixes #26633)
- net: fix importing net.openssl on linux causes tcp_conn.accept to fail (fixes #21257)
- net.mbedtls: fix cannot use mbedtls modules on macOS arm with tcc (fixes #21639)
- veb: fix session_app_test.v failure on OpenBSD (fixes #26012)
- Fix V fails to symlink after updating on Windows 10 (fixes #15580)
- net.http: fix HTTPS GET request fails on OpenBSD with tcc (fixes #26398)
- os: fix inconsistent behaviour of os.glob() on Windows and Linux (fixes #15448)
- db.sqlite: fix thirdparty amalgamation not found on Linux (#26724)
- builder: fix linux cross compilation for veb with -d use_openssl (#26733)
- builder: fix unable to override minimum macos version (fixes #10796)
- ci: increase timeout for gcc-freebsd job in FreeBSD workflow (#26814)
- net:
net.listen_tcp()doesn't work on ipv6 disabeld Linux (fixes #12176) - Cannot cross compile to linux from mac (fixes #18089)
vlang0.3.5+ broken on PowerPC (macOS, FreeBSD, Linux); while 0.3.4 builds fine (fixes #20507)- sokol: restore Linux GL 4.1 default (fix the X11/EGL context creation regression for Ubuntu 20.04
on older integrated GPUs, similar to 765cb7cfb6) (#26849) - sqlite: use bundled amalgamation on Linux/macOS when pkg-config is unavailable (#26817)
- pref: fix c error building from source on Void Linux (fixes #14559)
- term.ui: add support for raw linux tty (fixes #25463)
- Subtle runtime segfault on Linux x86_64 in GitHub actions CI (fixes #26121)
- clipboard: clipboard not working on windows and doesn't use global on linux (fixes #11338)
- builder: Compile error parallel-cc on windows (fixes #23174)
- os:
os.data_dir()is not common for Windows (fixes #24288) - os: on windows, os.execute() disallow some char in cmd (fixes #25756)
- net: Compiling on windows with openssl (fixes #13980)
- gg:
fn gg.Context.text_widthdoes not return the correct width of the font on Windows (fixes
#19516) - os: Windows 10 folder corrupted 'v run' command (fixes #25364)
- builtin: windows gg apps runs without having a window when launched from a file explorer (fixes
#25858) - all: v symlink on Windows 11 broken. (fixes #24675)
- net: websocket client connection in windows (fixes #24715)
- Error: conflicting types for '__v_thread_bool_wait' on cross compile to windows (fixes #13871)
- all: vlang doesn't compile on arm windows (fixes #23917)
- pref: fix .vsh compilation not working on macOS (fixes #13601)
- Implement cg_call() for ARM64 on macOS (fixes #26878)
- builtin: fix undefined GC symbols when building with tcc and bundled libgc on macOS (fixes #25527)
- term.ui: fix key events not working in iTerm on macOS (fixes #14924)
- pref: fix macOS builtin option error (fixes #16243)
- db.mysql: fix no output on windows when using mysql lib (fixes #14464)
- builtin: fix v commands changing console font on windows (fixes #15124)
- builder: fix msvc error with cflags and windows config (fixes #15638)
- builtin: fix sort() behaving differently on linux and windows (fixes #16512)
- make: fix cannot build v under windows 7 32b (fixes #23137)
- builder: fix hot reload on windows (fixes #3548)
- Fix db.sqlite.sqlerror on windows 11 from release download (fixes #20744)
- pref: fix 32bit closures broken on windows (fixes #25803)
- Fix windows cannot compile v.exe (fixes #26919)
- pref: fix v -cc msvc does not include bwdgc under windows (fixes #24229)
- builder: fix db.sqlite errors on windows (fixes #25069)
- Fix v repl not working in certain shells on windows (fixes #15712)
- builder: fix cannot cross compile to freebsd while windows works (fixes #22333)
- Fix parallel compilation failing on windows (fixes #26877)
- stbi: fix c.stbi_load failing on clang windows (fixes #17248)
- encoding: add support for windows-1252 encoding (fixes #19198)
- builtin: fix building on windows 7 failing due to missing psapi.h (fixes #26885)
- builtin: fix windows backtrace false positives (fixes #6654)
- sokol: fix sokol.audio not working on windows tcc (fixes #15863)
- Fix hot code reloading not working on windows (fixes #16256)
- net.http: fix incorrect error messages on windows when http request fails (fixes #25393)
- Fix incompatible integer to pointer conversion on windows execinfo (fixes #17032)
- builtin: split cfns.c.v into windows and linux parts (fixes #25821)
- builder: fix windows cross compilation arm error (fixes #24785)
- builder: fix hot code reload with graphics not working on windows 10 (fixes #3054)
- os: fix prebuild release and manual installation crash on windows (fixes #19466)
- builtin: fix lf automatically converted to crlf on windows (fixes #25640)
- Fix makev.bat fails on windows-latest: TCC bootstrap crashes at runtime, Clang 20 fallback fails
on vc/v_win.c (fixes #26958) - builder: fix Cross compiling for Linux on Windows does not work (fixes #12128)
- builder: fix Cross compilation failed, windows>linux (fixes #15461)
- builder: fix Cross compiling from linux to windows produces very slow performing binary (fixes
#17737) - Fix sporadic runtime failure of assertion with
-gc boehm_full_opton windows (the default gc
mode) (fixes #17916) - Fix Rethink the way DLLs are created under Windows (fixes #24641)
- Fix v up error on windows (fixes #15298)
- net.http: fix Strange error message for invalid site on Windows (http.get) (fixes #16968)
- net.http: fix windows: Failed to upload a file via content_type: multipart/form-data (fixes
#19256) - builtin: fix libbacktrace not supported on OpenBSD (fixes #22261)
- readline: fix The read_char () of the readline module does not work in Windows OS. (fixes #24686)
- builtin: fix flaky segfault with boehm gc on FreeBSD (#26970)
- db: sqlite: fix ADDR macro conflict on Windows by using #flag instead of #include (#26982)
- makev.bat: fix Windows TCC bootstrap (#26998)
- sync: fix sync on freebsd so that shared_nested_lock_runtime_test.v passes (#27013)
- builder: prevent coroutines_runtime_test on FreeBSD (#27016)
- ci: install SQLite via PowerShell instead of v vsh on Windows (#27071)
- ci: fix windows tcc stack (#27084)
- builder: fix cached vsh run on windows (#27083)
- ci: group logs sections for FreeBSD and OpenBSD (#27099)
- ci: group logs sections in Tools CI for FreeBSD and OpenBSD (#27135)
- makefile: fix compatibility with BSD make (or bmake on Linux) (#27157)
- builtin,cgen: address Windows compilation errors when using tcc toolchains (#27186)
- vdoctor: remove redundant ANSI decoding for wmic output on Windows (#27203)
- pref: fall back to bundled tcc on Windows when gcc is not in PATH (fix #27119) (#27233)
- doc: document compiling for iOS on macOS (#27245)
- all: fix master CI failures on OpenBSD and markdown (#27246)
- gg: fix compiler error of ved on windows (adjust declaration of struct C.RECT from windef.h)
(#27275) - Fix macOS tcc header lookup (#27134)
- db.sqlite: link libm on linux (#27323)
- net.http: add ALPN negotiation to the Windows SChannel backend (#27395)
- net.http: speak HTTP/2 over the Windows SChannel backend (#27397)
- net.mbedtls: enable MBEDTLS_THREADING_C on Windows and macOS (#27437)
- builder: fix infinite loop in find_module_path for projects at a Windows drive root (#27473)
- builtin: fix GetFinalPathNameByHandleW declaration for TCC on Windows (#27534)
- builtin: guard linux_bare amd64 syscall asm with $if amd64 (#27564)
- ci: use FreeBSD version 15.1 (#27597)
- sokol: add opt-in Windows D3D11 support (#27654)
- time: declare the Linux timerfd C API (timerfd_create/settime/gettime) (#27642)
- fasthttp: add Windows IOCP backend (#27710)
- fasthttp: preserve pointer-sized Windows sockets (#27727)
- net.http: fix vschannel https_make_request() buffer leaks on Windows (#27717)
- sync.stdatomic: restore TCC Linux thread fence (#27750)
- ci: run gitly (veb/fasthttp) on Windows and check it serves the expected HTML (#27741)
Examples
- Fix cannot run abcd example from documentation (fixes #18538)
- Improve the AI heuristic for 2048, in order to consistently reach above 4096 (#26716)
- Add a 15 puzzle game (#26752)
- eventbus: fix example fails to compile (fixes #26763)
- Update wasm_codegen for current wasmer (fixes #22607)
- Memory leak in many of the examples in V (fixes #24738)
- Mac: examples/database/mysql.v fails (fixes #20475)
- io: fix io.read hanging for server example (fixes #12194)
- Improve error message when running shader examples (fixes #16125)
- net: examples/concurrency/concurrency_http.v fails on BSD with tcc (fixes #24728)
- Examples/2048: consumes GPU without user interaction (fixes #6602)
- net.http: fix comparison example fetch HN stories failing on OpenBSD (fixes #15548)
- doc: fix special channel features example needing set capacity to succeed (fixes #23481)
- builder: fix termux hot reload example segmentation fault (fixes #18135)
- all: convert js_dom_draw example to veb (fixes #22603)
- compress.zstd: fix use zstd example outputting nothing (fixes #25071)
- builder: fix compiler bug when trying to run the 2048 example on macOS (fixes #15519)
- doc: fix array slice example to match documentation (fixes #21487)
- db.sqlite: fix v examples sqlite (fixes #17888)
- Fix bugged numbers in 2048 example (fixes #13620)
- Remove unused variables for veb middleware (#27025)
- Remove unused variable in snek JS (#27036)
- Remove unused variable/function in viewer (#27037)
- x.async: fix format for example in README (#27046)
- cli: render command groups, inherited flags, examples and learn-more in --help (#27124)
- term: fix misleading example in README (fix #27120) (#27229)
- ci: smoke test the veb example (fasthttp) http server on windows (#27731)