Releases: goplus/xgo
v1.6.6
What's Changed
DQL (DOM Query Language) (#2611):
- dql/ts: https://github.com/goplus/dql/releases/tag/v0.2.0
- cl.compileAttr: v.$name => v["name"] as fallback if v is a map or empty interface by @xushiwei in #2650
- dql/maps,reflects: _name, _value by @xushiwei in #2651
- dql: Node by @xushiwei in #2652
- dql/xgo: doc (Go => XGo) by @xushiwei in #2654
- dql/golang,xgo: support load from uri by @xushiwei in #2656
- dql/reflects: lookup attr support method by @xushiwei in #2657
changes:
Full Changelog: v1.6.5...v1.6.6
v1.6.5
What's Changed
DQL (DOM Query Language) (#2611):
- dql: README by @xushiwei in #2647
- cmd: hdq by @xushiwei in #2646
- dql/fetcher by @xushiwei in #2637 #2645
- dql/html,xml: text by @xushiwei in #2643
- dql: fs by @xushiwei in #2635 #2636
encoding (Domain Text Literal):
changes:
- cl: compileErrWrapExpr remove autoCall (#2638) by @xgopilot @xushiwei in #2640
- parser: parseEnvExpr support $"attr-name" by @xushiwei in #2641
deps:
- build(deps): bump github.com/goplus/mod from 0.19.2 to 0.19.3 by @dependabot[bot] in #2644
- build(deps): bump github.com/qiniu/x v1.16.2 by @dependabot[bot] in #2644
Full Changelog: v1.6.3...v1.6.5
v1.6.3
What's Changed
DQL (DOM Query Language) (#2611):
- library xgo/dql: #2610 #2612 #2614 #2616 #2623 #2624 #2625 #2626 #2627
- ast, parser, printer: #2604 #2608 #2615 #2621
- cl:
- demo: dql-json by @xushiwei in #2632
- bugfix: error code generated by DQL (#2629) by @xgopilot @xushiwei #2631
encoding (Domain Text Literal):
- xgo/tpl/encoding => xgo/encoding by @xushiwei in #2622
- encoding: html, yaml, golang, xgo by @xushiwei in #2623 #2626 #2627
other features:
- Range Over Function Types by @xushiwei in #2606
- gogen v1.21.0: forRange support XGo_Enum() return iter.Seq/Seq2 by @xushiwei in #2609
documents:
- doc: Struct vs. Tuple: Type Identity and Instantiation by @xushiwei in #2584
- doc: Domain Text Literals by @xushiwei in #2585
- doc: Map Type by @xushiwei in #2586 #2587 #2588
- doc: Slice Type by @xushiwei in #2590 #2591
- doc: String Type by @xushiwei in #2592 #2593
- doc README: link to Map/Slice/String by @xushiwei in #2594
- doc: Functions and Closures by @xushiwei in #2595 #2596 #2597
- doc: Built‐in Functions by @xushiwei in #2600 #2601 #2602
changes:
- fix: prevent duplicate XGo_Init calls in embedded types by @go-wyvern in #2582
- shouldCallXGoInit refactor by @xushiwei in #2583
- testcase refactor: listcompr/mapcompr/selectcompr by @xushiwei in #2589
- fix: pass source argument to cb.Val in compileStructLit by @go-wyvern in #2599
- parser: parseFuncDeclOrCall - fix warning by @xushiwei in #2603
- compileErrWrapExpr fix (support lhs); remove tryFileLine for XGo_Env by @xushiwei in #2618
- remove cl/internal/typesalias by @visualfc in #2619
- stream: move to x/stream; domaintext literal: xgo/tpl/encoding => xgo/encoding by @xushiwei in #2622
deps:
- build(deps): bump golang.org/x/net from 0.49.0 to 0.50.0 by @dependabot[bot] in #2613
- build(deps): bump github.com/goplus/mod v0.19.2 by @xushiwei #2633
- build(deps): bump github.com/goplus/gogen v1.21.2 by @xushiwei #2631
Full Changelog: v1.6.2...v1.6.3
v1.6.2
What's Changed
features:
docs:
changes:
- demo/tupletype by @xushiwei in #2565
- XGo_Env: support fileline param (token.Position) by @xushiwei in #2567
- tryFileLine: remote log & add comments by @xushiwei in #2568
- tryFileLine: use relFile of fileName by @xushiwei in #2569
- XGo_Env: remove fileline support by @xushiwei in #2570
Full Changelog: v1.6.1...v1.6.2
v1.6.1
What's Changed
Unified Declaration Syntax via Tuples
This update introduces a paradigm shift in the language's syntax by leveraging Tuples to unify the definitions of functions, types, and variables. By treating everything—from parameters to standalone types—as a tuple, we have achieved a truly "orthopedic" language design where data structures and logic share a single DNA.
1. The Core Philosophy: "Everything is a Tuple"
The cornerstone of this update is the realization that a type, a named field, and a collection of fields are all just variations of a tuple. Specifically, the following are semantically identical:
T(a raw type)(T)(a single-element tuple)(name T)(a named single-element tuple)
In this version,
2. Functions as Tuple Transformations
Under this unified model, a function is no longer a special construct with its own unique grammar. Instead, a function is defined as a transformation from one tuple to another.
-
Mapping:
$Tuple_{in} \to Tuple_{out}$ -
The Unit Tuple: If a function has no parameters or no return values, it simply interacts with the Empty Tuple
().
3. Unified Syntax in Action
By standardizing on tuples, the syntax for functions, types, and variables becomes perfectly symmetrical. Notice how the "shape" of the data remains constant across different keywords:
func run (timeout, maxRetries int, debug bool) (code int, err error)
type Config (timeout, maxRetries int, debug bool)
var cfg (timeout, maxRetries int, debug bool)
var result (code int, err error)Release Notes
This is the most significant update since XGo was renamed.
XGo MiniSpec has removed StructType and CompositeLit. This means the T{...} syntax is no longer part of the recommended grammar set — this includes []T{...}, map[K]V{...}, NamedT{...}, and so on. These have been replaced by TupleType and TupleLit.
features:
- Tuple Types (#2538) by @xushiwei @xgopilot[bot] in #2539 #2547 #2548 #2549 #2550 #2551 #2552 #2553 #2554 #2555 #2556 #2557
feature specs:
- Tuple Types by @xushiwei @xgopilot[bot] in #2561
- Keyword Arguments by @xushiwei @xgopilot[bot] in #2564
demos:
- TupleTypes and TupleLits: demo/tupletype
type Point (x, y int)
pt := Point(2, 3)
echo pt.x, pt.y
pt = (100, 200)
echo pt
pt2 := Point(y = 5, x = 3)
echo pt2- Keyword Arguments and Tuples: demo/kwargs
type Config (timeout, maxRetries int, debug bool)
func run(task int, cfg Config?) {
if cfg.timeout == 0 {
cfg.timeout = 30
}
if cfg.maxRetries == 0 {
cfg.maxRetries = 3
}
echo "timeout:", cfg.timeout, "maxRetries:", cfg.maxRetries, "debug:", cfg.debug
echo "task:", task
}
run 100, timeout = 60, maxRetries = 5
run 200deps:
Full Changelog: v1.6.0...v1.6.1
v1.6.0
What's Changed
release notes:
- break GopXXX => XGoXXX (incompatible changes, see goplus/[email protected])
- keep Gop_Exec, Gop_Env
- keep Gop_sched (to be removed, so there is no XGo_sched)
release tools:
features:
- classfile variable initialization (#2522) by @xushiwei @xgopilot in #2528 #2544 #2545
- feat(ast,parser,printer): add TupleType for Phase 1 of Tuple Type proposal by @xgopilot[bot] in #2539
changes:
- fix(types): include FileSet in convGoErr for better error context by @go-wyvern in #2537
- prototype: GopXXX => XGoXXX by @xushiwei in #2541
- docs(spec-mini): document Commands and Calls syntax by @xgopilot[bot] in #2477
- docs: update built-in interfaces in XGo MiniSpec by @xgopilot[bot] in #2507
- parser mode: GoPlus => XGo by @xushiwei in #2524
- feat(printer): add CommentedNodes support for statement-level comments by @xgopilot[bot] in #2527
- feat(checker): enhance error handling by converting Go errors by @go-wyvern in #2531
- refactor(env): replace hardcoded environment variable keys with constants by @go-wyvern in #2530
ci & tools:
- chore(Dockerfile): use heredoc for build steps by @aofei in #2510
- chore(build): add
-trimpathandmod_timestampfor reproducible builds by @aofei in #2511 - chore(release): migrate to
dockers_v2from GoReleaser 2.12 by @aofei in #2512 - chore: configure Claude model to use claude-4.5-opus by @CarlJi in #2533
- docs: update CLAUDE.md with language spec structure guidance by @xgopilot[bot] in #2505
deps:
- chore(deps): bump github.com/qiniu/x from 1.15.2 to 1.15.3 by @dependabot[bot] in #2516
- chore(deps): bump github.com/goplus/mod 0.18.0 by @dependabot[bot] in #2520
- chore(deps): bump github.com/goplus/gogen v1.20.2 by @xushiwei in #2544
Full Changelog: v1.5.3...v1.6.0
v1.6.0-pre.3
What's Changed
release notes:
- break GopXXX => XGoXXX (incompatible changes, see goplus/[email protected])
- keep Gop_Exec, Gop_Env
- keep Gop_sched (to be removed, so there is no XGo_sched)
features:
- feat(ast,parser,printer): add TupleType for Phase 1 of Tuple Type proposal by @xgopilot[bot] in #2539
changes:
- fix(types): include FileSet in convGoErr for better error context by @go-wyvern in #2537
- prototype: GopXXX => XGoXXX by @xushiwei in #2541
Full Changelog: v1.6.0-pre.2...v1.6.0-pre.3
v1.6.0-pre.2
What's Changed
Full Changelog: v1.6.0-pre.1...v1.6.0-pre.2
v1.6.0-pre.1
What's Changed
release tools:
changes:
- docs(spec-mini): document Commands and Calls syntax by @xgopilot[bot] in #2477
- docs: update built-in interfaces in XGo MiniSpec by @xgopilot[bot] in #2507
- parser mode: GoPlus => XGo by @xushiwei in #2524
- feat(printer): add CommentedNodes support for statement-level comments by @xgopilot[bot] in #2527
- feat(parser): Phase 1 - Grammar support for classfile variable initialization by @xgopilot[bot] in #2528
- feat(checker): enhance error handling by converting Go errors by @go-wyvern in #2531
- refactor(env): replace hardcoded environment variable keys with constants by @go-wyvern in #2530
ci & tools:
- chore(Dockerfile): use heredoc for build steps by @aofei in #2510
- chore(build): add
-trimpathandmod_timestampfor reproducible builds by @aofei in #2511 - chore(release): migrate to
dockers_v2from GoReleaser 2.12 by @aofei in #2512 - chore: configure Claude model to use claude-4.5-opus by @CarlJi in #2533
- docs: update CLAUDE.md with language spec structure guidance by @xgopilot[bot] in #2505
deps:
- chore(deps): bump github.com/qiniu/x from 1.15.2 to 1.15.3 by @dependabot[bot] in #2516
- chore(deps): bump github.com/goplus/mod 0.18.0 by @dependabot[bot] in #2520
- chore(deps): bump github.com/goplus/gogen from 1.19.6 to 1.19.9-0.20260114155758-01b7b91c31d1 by @aofei in #2532
Full Changelog: v1.5.3...v1.6.0-pre.1
v1.5.3
What's Changed
features:
- feat: auto-reference for typed CompositeLit (#2484) by @xgopilot[bot] in #2485
- parser testcase: struct tag by @xushiwei in #2486
- feat: struct tags (#2488) by @xushiwei in #2495
- doc: struct tags by @xushiwei in #2497
changes:
- fix: add cycle import detection to prevent infinite loops by @xgopilot[bot] in #2471
- Support XGoPackage marker alongside legacy GopPackage by @xgopilot[bot] in #2474
- fix(class): fix class obj recv implicit function no position by @go-wyvern in #2489
- fix(cl): fix Main function recv implicit function no position by @go-wyvern in #2490
- fix(compile): pass the star expression to the Star function for addtional node pos by @go-wyvern in #2491
- compileErrWrapExpr: refactor by @xushiwei in #2501
rename Go+ => XGo:
deps:
- chore(deps): bump github.com/goplus/lib from 0.3.0 to 0.3.1 by @dependabot[bot] in #2480
- chore(deps): bump github.com/goplus/gogen from 1.19.5 to 1.19.6 by @dependabot[bot] in #2492
- chore(deps): bump github.com/qiniu/x from 1.15.1 to 1.15.2 by @dependabot[bot] in #2498
- github.com/goplus/mod v0.17.2 by @xushiwei in #2499
ci & tools:
- chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #2487
New Contributors
Full Changelog: v1.5.2...v1.5.3