Download Latest Version v_macos_x86_64.zip (24.1 MB)
Email in envelope

Get an email when there's a new version of V Programming Language

Home / 0.5.2
Name Modified Size InfoDownloads / 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 parameter in 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.Time not 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 []Data as []Cols even though Data implements Cols (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 if expression 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 + interface in 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 os earlier than others (fixes [#15811])
  • Fix cannot assign to *val with 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.Window as 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 int and time.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 none from or block inside match (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 []AliasTokens payload equivalence (fix [#27006]) (#27278)
  • Fix static method used as map/filter argument (#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 but bar[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 []u8 with cap: 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 if expressions (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 $tmpl error 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 where expression 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/.args in $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 next for for in over 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 aes module (#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 100000000000 overflows u32 (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.read returns io.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 os constants without importing os in 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 gg under 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, UUIDSession and ulid (#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/$new type 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 character but should undefined 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_timeout not working for UdpConn.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.proxy is public but cannot be interpolated because HttpProxy is private and has no explicit str() (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 net module (#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 .len instead of aborting with "could not find field len" (#27518)
  • wasm: make integer/string builtins available to the -os browser target (#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/!T returns 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 method for 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 for loop with u8 boundary at 255 (fixes [#25379])
  • Fix using debug.dump_callstack() with -d callstack causing 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 if expression 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 address error when using os.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 if in if 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 clang and defer in match branch (fixes [#19092])
  • Fix dump modifying 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.FnType to v.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 none literal (#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.methods dispatch (fix [#27076]) (#27226)
  • Fix IError assignment to ?IError field (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 or block whose last expr is !void call (#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 as casts (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 #line directive 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/match return mixing a call and a literal branch (#27457) (#27504)
  • Fix as/is on 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 expr handle referencing undeclared thread__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 @LOCATION and @FILE_LINE interpolation 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 attrs for 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 fn typed 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.v to 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/tools is 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 run not 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])
  • vlang 0.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_width does 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_opt on 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)
Source: README.md, updated 2026-07-12