| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| v_macos_x86_64.zip | 2026-07-12 | 24.1 MB | |
| v_macos_arm64.zip | 2026-07-12 | 24.3 MB | |
| v_linux_arm64.zip | 2026-07-12 | 24.8 MB | |
| v_linux.zip | 2026-07-12 | 25.7 MB | |
| v_windows.zip | 2026-07-12 | 23.7 MB | |
| 0.5.2 source code.tar.gz | 2026-07-12 | 16.0 MB | |
| 0.5.2 source code.zip | 2026-07-12 | 20.1 MB | |
| README.md | 2026-07-12 | 96.9 kB | |
| Totals: 8 Items | 158.8 MB | 11 | |
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)