github vlang/v 0.5.2

3 hours ago

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

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)

Don't miss a new v release

NewReleases is sending notifications on new releases.