Tya v0.61 Release Notes
v0.61 is the current released implementation. It includes stackable interface behavior, native packages, package tools, new class-style standard-library packages, WASM build targets, and the first external package ecosystem split into separate repositories.
Language
- Interfaces may define default instance methods.
- Interface defaults can satisfy body-free requirements from other interfaces.
- Interfaces may contribute instance fields.
- Interfaces may define zero-argument
initializehooks. - Interface initializer hooks run at a class constructor’s
super()point. - Class overrides can call
super()into the interface default stack. - Interface default methods can call
super()through stacked defaults. - Same-name interface fields and unrelated default methods require explicit class resolution.
- String interpolation now balances nested braces and preserves quotes inside
interpolation expressions, so forms such as
{user["name"]}and dictionary literals inside interpolation compile correctly.
Toolchain and Packages
tya.tomlsupports an optional[native]table with C sources, headers, include directories,pkg-configdependencies,cflags,ldflags, and declared native functions.tya build,tya run, andtya testuse the same native metadata collection path.- Native wrappers are called through the existing
TyaValueruntime ABI. - Missing native files, missing
pkg-config, missing host dependencies, and duplicate native function names produce clear diagnostics. tya new --template lib --native <name>creates a buildable native package scaffold.tya doctor nativereports the current native build environment and effective flags.- New package tool declarations let packages expose Tya script commands through
[tools], andtya toolruns locked dependency tools or pinned one-shot git/path tools. - WebAssembly build targets were added, with unsupported native package usage rejected for WASM builds.
Standard Library
net/http.Servernow supports route groups, middleware, custom 404/500 handlers, named paths, redirects, PATCH/HEAD/OPTIONS/ANY routing, wildcard tail captures, and optional trailing-slash matching.- New
cli.Clihelpers parse command-line options, positional arguments, defaults, required options,--, and deterministic usage text. - New
template.Templaterenderer handles generic text templates with variables, dotted/indexed paths, conditionals, loops, explicit partials, file rendering, strict missing-value errors, and optional HTML escaping. markdown.Markdownnow has class-styleparse,to_html_ast, andrenderAPIs, plus tables, task lists, strikethrough, fenced-code info strings, reference links, images, nested lists, setext headings, and opt-in raw HTML.- New
compress.Compresshelpers gzip/gunzip and zlib/unzlib strings, bytes, and files. - New
log.Loggerwrites level-filtered text or JSON records to stderr by default or appends them to a configured file path. - New
io.Iostreams wrap stdin/stdout/stderr and file readers/writers with line iteration, chunk reads, binary modes, and stream copying. - New
net/ippackage parses and classifies IPv4, IPv6, IPv4-mapped IPv6, and CIDR networks. - New
net/socketpackage exposes TCP client/server sockets with text and binary reads, line helpers, address inspection, timeouts, and structured connection failures. url.Urlnow parses bracketed IPv6 hosts, validates percent escapes and ports, resolves relative references, normalizes paths, and preserves duplicate query keys.- New
color.Colorvalues provide RGBA channels, hex/CSS parsing, named colors, conversion helpers, and deterministic color operations. - New
geometryvalues provideVector2,Vector3,Point,Size,Rect, andCirclehelpers for reusable spatial calculations. - New
transform2d.Transform2Dvalues provide 2D affine transforms, geometry application helpers, inversion, composition, and matrix interop. - New
compiler/*introspection packages expose lexer, parser, AST, checker, and formatter results as stable public Tya dictionaries. - New
binary.Readerandbinary.Writervalues provide endian-aware integer and IEEE 754 float reads/writes overbytes. - New
collectionsvalues provideStack,Queue,Deque,Set, and stable min-priority queue containers. randomnow includes independentRnginstances plusbool,shuffle_copy,sample,weighted_choice, andweighted_indexhelpers.- New
serialization.Serializerhelpers convert primitives, dictionaries, bytes, and class instances to JSON-compatible data, JSON, and TOML. - New
xmlDOM classes parse, inspect, and dump practical XML, including common JUnit XML output. - New
image.Imageandimage.Codecclasses provide deterministic RGBA image metadata, pixel access, transforms, and byte/file round trips.
External Packages and Tools
The following projects are released as separate repositories and are not part of Tya’s standard library:
https://github.com/komagata/tya-sqlitehttps://github.com/komagata/tya-sdl2https://github.com/komagata/tya-gtk4https://github.com/komagata/tya-raylibhttps://github.com/komagata/tya-slimhttps://github.com/komagata/flakewatchhttps://github.com/komagata/magvideo
Each package/tool is distributed by git URL plus tag. Tya still has no central
package registry and no tya publish command.
Verification
The release gate is:
go test ./... -count=1
The published v0.61.0 tag passed the full suite, including the maintained self-host fixed-point tests.