## 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 - Optional error parameter for closing channel (fixes #19203) - Allow negative indexing of array like `arr#[-1]` (fixes #24066) - Add power operator `**` (fixes #24067) - BusyBox shebang #!/usr/bin/env -S v run (fixes #26820) - Add ability to view code coverage output in editor (fixes #24416) - Add new standard module: mcp (Model Context Protocol integration) (fixes #25694) - Add operator overloading for `[]` (fixes #23177) - vweb removed entirely (it was deprecated and replaced with veb a while ago) - Comptime $if bsd (#26983) #### V interpreter - v2 eval backend (#27528) #### Breaking changes #### Checker improvements/fixes - Allows you to pass a numeric value to JS.Number without a cast (fixes #24677) - Add self-comparison and always true/false branch warnings (fixes #23404) - Fix byte/u8 array param type checking and var-fn name clash (fixes #26492) - Skip ref field init check when default expr exists (fixes #25213) - Add error test for Result type in struct init fields (fixes #18210) - Support smartcasting on index expressions (fixes #26550) - Fix embedded struct member visibility (fixes #13607) - Fix enum variant equality test is not commutative (fixes #10331) - Fix implementing a generic interface using a concrete type does not compile (fixes #24060) - Fix local variable with module before should give a compiler error (fixes #10658) - Fix compiler omits to define struct method used in generic function (fixes #26419) - Fix cannot sort 2d array (fixes #23892) - Fix i64 transfer to f64 should be explicit (fixes #14934) - Fix "Builder Error" when defining field `gg gg.Context = unsafe {nil}` not as a pointer (fixes #15201) - Fix aliased pointers not recognized (fixes #24621) - Change array initialization syntax (fixes #7061) - Fix confusing error message when test file gets an invalid name (fixes #15642) - Fix arrays.sum([]) or {panic(err)} produces misleading error message (fixes #22859) - Added support for hover function declaration (#26789) - Fix orm compiler crash (fixes #18269) - Fix multiple bugs related to alias + reference (fixes #24010) - Fix [params] struct visibility error location (fixes #16389) - Fix immutability of variable may be broken (fixes #17135) - Fix arithmetic operator overloading result type (fixes #23194) - Fix type-casting issue with generic function as argument (fixes #21132) - Fix cannot use &int as &&int in argument (fixes #23019) - Fix implicit cast inconsistency (fixes #26759) - Fix using sum type or interface for os.file.write_struct (fixes #19117) - Match on mutable sumtype doesn't compile (fixes #16506) - Custom error without `IError()` crashes V (fixes #16921) - Cannot return a function from a generic function (fixes #22011) - Unexpected sizeof() result on union (fixes #23141) - Array returned by function bypasses illegal sumtype conversion checker error (fixes #23271) - Duplicate case value (fixes #25240) - SIGSEGV termination with os write_struct() and read_struct() when in separate v files (fixes #11285) - Generics not passed to arguments when argument has a struct with generic (fixes #24318) - Generics compile failure (fixes #24471) - Immutable instance of a struct can be modified via interface (fixes #23509) - Should report `unused parameter` in function parameters (fixes #26213) - Passing a function to a function as a parameter does not work (fixes #22008) - Error behavior in array of sumtype has array subtype (fixes #26363) - Builder error "This should never happen" (fixes #12434) - Match []u8 gives &[]u8 (fixes #24054) - Unresolved variable in `defer` (fixes #17309) - C compilation error with shared struct (fixes #25160) - Error casting aliases to generic types (fixes #13863) - Map key type `time.Time` not supported (datatypes.Set[time.Time]) (fixes #25013) - Field does not exist with embedded structure and sumtype variants (fixes #11290) - Specific array initialisation fails (fixes #14261) - Some bug with comptime (fixes #26234) - Creating array as value of map must be explicit when using `<<` (fixes #18160) - V compiler bug: error when casting a generic function intricated in a generic type used in a generic sum type (fixes #25930) - Cannot convert 'struct _option_string' to 'unsigned char *' (fixes #26347) - Shared work on primitive types (fixes #25611) - V sometimes thinks 1 == &1 (hidden dereferencing that shouldn't be there?) (fixes #11543) - Wrong type is inferred in generic (fixes #19036) - Invalid memory access with array of empty interface return type (fixes #24864) - Fix generic type mismatch with generic functions from multiple sources (fixes #25217) - Fix veb c compilation error when context not mutable (fixes #25361) - Fix inline array index assignment with literals (fixes #9691) - Fix c binding compiling to wrong c intermediary (fixes #19046) - Fix cannot use $if/$else to set value of enum (fixes #23336) - Fix return error() in match (fixes #16387) - Fix cannot implement empty interface with different interface (fixes #24193) - Fix select chan timeout (fixes #15269) - Fix null pointer constructed and dereferenced in safe code (fixes #20497) - Fix compiler bug when running tests (fixes #18121) - Fix cannot match generic type in generic function (fixes #24648) - Fix implicitly-added str method not available to interfaces (fixes #24791) - Fix passing function as argument to vec.mul_scalar (fixes #25829) - Support flag_var bitwise_operator= .enum_flag (fixes #20940) - Fix duplicate case value for match with u8 and int (fixes #26627) - Fix sumtype else branch of if !is should consider smartcast (fixes #13587) - Fix referenced operator overloading not working (fixes #15551) - Fix clang build generic issue (fixes #15285) - Fix incorrect memory access with generics passing array (fixes #26587) - Fix c compile error with ui.window.on_resize (fixes #13339) - Fix passing normal array to array of interface type (fixes #18920) - Fix enum values set with constants from $if/$else (fixes #23348) - Fix array of variant not accepted for array of sumtype (fixes #24140) - Fix arbitrary pointers in safe code (fixes #25247) - Fix builder error when using function types from a module (fixes #18853) - Fix broken operator overloading for aliased arrays (fixes #23213) - Fix veb closure middleware generic inference error (fixes #23868) - Fix guards being ignored (fixes #24401) - Fix c error printing reference of a non-integer variable (fixes #23461) - Fix cannot return struct implementing interface with return match (fixes #24148) - Fix dereference of T after $if T is $pointer (fixes #25619) - Fix error compiling a type alias with match (fixes #13860) - Fix clang build error with if expr in or block (fixes #15214) - Fix error message for missing import or block path (fixes #21533) - Fix c structs pub inconsistency (fixes #22293) - Fix pub field of private struct accessible outside module (fixes #26625) - Fix generics relying on symbol declaration order (fixes #24678) - Fix undeclared c constant not being checked (fixes #15893) - Fix implementing generic function for generic function type (fixes #18037) - Add declaration errors for unused functions and constants (fixes #19079) - Fix int <-> u8 promotions (fixes #25936) - Fix optional value in maps not allowed (fixes #26235) - Fix type-casting issue when providing generic function as argument (fixes #21132) - Fix consecutive asserts ignoring previous (fixes #24194) - Unknown type for json.decode with nested generics (fixes #22220) - Mutating immutable variable (fixes #21080) - Error handling, compile error (fixes #20980) - V error not allowing locking of element in array of shared structs (fixes #23449) - Cgen, checker: pointer in generic function (fixes #22791) - Support smart casting receiver var (fixes #24670) - Test vlib/v/tests/aliases/modules/value/value_test.v failed in a single file (fixes #26103) - Misleading or wrong error message in UTF-8 byte sequence verification (fixes #25874) - Compiler accepts &int as a key for map[int]int (fixes #23069) - Incorrect error message when importing modules indirectly (fixes #16271) - Asm bad operand with opcode error (fixes #10708) - Mutability breaks encapsulation principle (fixes #24719) - Passing interface to generic function result in C error. (fixes #18320) - Error when using options fields (fixes #18333) - Add support for generic struct params (fixes #24191) - Cross compiling for windows on Linux Mint, openssh issue (fixes #13978) - Comparing interface with struct instance gives c error: invalid operand types for binary operation, invalid aggregate type for register load (fixes #24018) - Maps with non-generic interfaces as values don't work (fixes #16576) - Types should be interchangable if they have the same structure (fixes #26190) - Segmentation fault when trying to use an array return type for a pool_processor callback (fixes #21543) - Fix cannot use `[]Data` as `[]Cols` even though `Data` implements `Cols` (fixes #23666) - Fix type inference with generic structs and generic interfaces (fixes #19618) - Fix cannot convert struct to struct pointer in generics (fixes #21835) - Do not force the declaration of unused callback params (fixes #24460) - Fix empty interface array push with fixed array c error (fixes #23011) - Implement syntax change for fixed arrays (fixes #25183) - Fix enum taking function as init value when cast to int (fixes #25908) - Fix mut smartcasts not working correctly (fixes #17440) - Fix TCP server socket file descriptor corruption when using GC (fixes #18263) - Fix anonymous generic struct shadow variable (fixes #15535) - Fix using only C functions from a module making it appear unused (fixes #26232) - Fix wrong error when smartcasting references to sumtypes (fixes #17236) - Fix wrong alias management in generic methods (fixes #24012) - Fix checker error for veb handler param type (fixes #24870) - Fix nested `if` expression causing compilation error (fixes #26865) - Fix smart casting on array's element (fixes #14766) - Fix simple generic structure declaration error (fixes #21989) - Fix missing compile time error for option selector in or block (fixes #17761) - Fix wrong alias management in generic methods (fixes #24011) - Fix compiler bug with bound mut ref callback (fixes #14741) - Fix invalid utf8 string warning in character literal (fixes #23741) - Fix silent conversion of u64 to f64 (fixes #21778) - Fix wrong check error when using `mut` + `interface` in function parameter (fixes #26159) - Add @[nocopy] attribute to prevent struct value copying (fixes #26721) - Fix type promotion not working with bitwise operators (fixes #9943) - Fix error for same function signature passed as argument (fixes #13965) - Fix private C definition causing compile error if importing `os` earlier than others (fixes #15811) - Fix cannot assign to `*val` with StructTypePointer (fixes #23020) - Fix vdoc failing to compile on macOS Sequoia (fixes #26698) - Fix .str() method inconsistent behavior (fixes #25825) - Fix failed type inference for fold with lambda expression (fixes #25934) - Prevent mutation of a function result which should be immutable (fixes #13817) - Fix infix arithmetic on explicit struct pointers (#26810) - Fix cgen error redefinition of type (fixes #26884) - Delete the default zero value in v (fixes #23940) - Fix returning private struct from public function works without noinit (fixes #18427) - Fix setting variable through generic function to any{} field (fixes #19010) - Fix generic function with generic sumtype compile error (fixes #25248) - Fix getting index of an array with ref arg (fixes #17800) - Fix checker checks wrapped generic type while cgen uses incorrect type (fixes #20664) - Support passing generic types to orm select (fixes #24041) - Fix option smartcast after non-option assignment (fixes #23611) - Fix stacking multiple types producing error in match smartcast (fixes #25418) - Fix c error when reference field improperly initialized (fixes #25980) - Fix implements keyword not working with generics (fixes #22629) - Fix ice when sorting an array of functions (fixes #10739) - Support $for variant in field.typ.variants for sumtype fields (fixes #26902) - Fix return 0; throwing unreachable code error (fixes #26916) - Fix named function type embedding (fixes #26918) - Fix !-propagating call to always-erroring function still requires placeholder return (fixes #26895) - Fix mutable pointer parameters under certain circumstances (fixes #24408) - Allow c declarations imported from an external module to be used for casting (fixes #26192) - Fix assert expression with -(-2) or +2 sub expression (fixes #26815) - Fix unhandled exception on map with anon fn value (fixes #23522) - Fix ?&t cannot be compared to nil in comptime indirections branch (fixes #26893) - Fix passing fixed array [n]t to generic function expecting []t (fixes #26899) - Fix int values incorrectly promoted to f32 (fixes #7692) - Fix Compilation crash on OpenBSD since commit ee64e96 (fixes #26930) - Fix cgen error when using `sdl.Window` as non-ref type for struct field (fixes #23042) - Fix app timeouts once "before_request" middleware is registered. (fixes #24782) - Fix Compiler doesn't catch type mismatch with `int` and `time.Duration` (fixes #18873) - Fix Regression: V can't match generics variant (fixes #26866) - Fix Modifying an immutable pointer indirectly is allowed (fixes #12899) - Fix arrays in maps should be inferred based on the first value in the map (fixes #19253) - Fix Error in return `none` from or block inside `match` (fixes #17422) - Fix Generic method unable to implement an interface with a different interface passed as argument (fixes #20670) - Fix empty `[noreturn]` function (fixes #18018) - $if (int(typeof(val).idx) >> 16) & 0xff == 0 { (fixes #20398) - [ ';' expected (got "MessageError") ] (fixes #13484) - Err fix (fixes #26975) - Generics fix (fixes #27032) - Validate or-block defaults before outer casts (#27059) - Overwrite stale unresolved fixed-array sym for struct fields (fix #27078) (#27081) - Update fixture outputs (#27155) - Report unwrapped option in infix arithmetic (fix #27082) (#27225) - Allow `C.S{}` zero-init for C structs with reference fields (fix #27170) (#27228) - Explain smartcast narrowing in `or {}`/`?` error on unwrapped option (fix #27130) (#27238) - Warn when a local variable shadows a function declaration (fixes #22685) (#27272) - Accept `[]Alias` ↔ `Tokens` 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 ` 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 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