Releases: goplus/xgo
v1.7.1
What's Changed
features:
- cl: support range over integer types (Go 1.22+) by @xgopilot[bot] @xushiwei in #2713 #2714
- cl: support new(expr) for Go 1.26+ by @xgopilot[bot] @xushiwei in #2712 #2715
- cl: support overload interface methods by @xushiwei in #2727
- x/format: XGoStyleSource/XGoStyle by @visualfc in #2724
features (xgo pack):
- tool: add pack package for merging scattered config files by @xgopilot[bot] in #2710
- tool/pack: PackFlagPrompt by @xushiwei in #2716
- tool/pack: add PackProject for fs.ReadDirFS-based packing by @xgopilot[bot] in #2721
- tool/pack refactor by @xushiwei in #2722
- xgo pack command by @xushiwei in #2717
documents:
changes:
- cl: _testjs by @xushiwei in #2705
- dql/fetcher: use isClass(xxx) instead of ($class == "xxx") by @xgopilot[bot] in #2711
deps:
- build(deps): bump github.com/goplus/mod from 0.20.1 to 0.20.2 by @dependabot[bot] in #2723
ci & tools
Full Changelog: v1.7.0...v1.7.1
v1.7.0
What's Changed
features:
changes:
- fix(tool): use xgo version as cache hash for bundled packages by @xgopilot[bot] and @xushiwei in #2690 #2691
- TestClassContains by @xushiwei in #2694
- revert #2670 by @xushiwei in #2693
- gogen v1.22.0: revert overload-conflict by @xushiwei in #2699
deps:
- build(deps): bump github.com/goplus/mod from 0.20.0 to 0.20.1 by @dependabot[bot] in #2698
Full Changelog: v1.6.9...v1.7.0
v1.6.9
What's Changed
changes:
deps:
- build(deps): bump github.com/goplus/cobra from 1.9.13 to 1.9.15 by @dependabot[bot] in #2686
ci & tools:
- build(deps): bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #2687
Full Changelog: v1.6.8...v1.6.9
v1.6.8
What's Changed
spec:
- docs: add classfile specification by @aofei in #2675
- fix(classfile): sanitize reserved class type names by @aofei in #2683
features:
changes:
- refactor(classfile): remove built-in
.spxand.gmxhandling by @aofei in #2677 - mod v0.20.0 by @xushiwei in #2681
Full Changelog: v1.6.7...v1.6.8
v1.6.7
What's Changed
features:
- cl: implement interface-based keyword arguments (#2678) by @xgopilot[bot] @xushiwei in #2679 #2680
- xgo builtin func: contains by @xushiwei in #2670
- dql/html: TextOf with a nodeFilter and support pre tag by @xushiwei in #2672 #2673 #2674 #2676
- dql/fetcher: URL by @xushiwei in #2668
deps:
- build(deps): bump github.com/goplus/mod 0.19.5 by @dependabot[bot] in #2658
- build(deps): bump github.com/goplus/cobra from 1.9.12 to 1.9.13 by @xushiwei in #2671
ci & tools:
- build(deps): bump goreleaser/goreleaser-action from 6 to 7 by @dependabot[bot] in #2659
- build(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #2662
- build(deps): bump docker/setup-qemu-action from 3 to 4 by @dependabot[bot] in #2661
- build(deps): bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #2664
Full Changelog: v1.6.6...v1.6.7
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