Skip to content

Releases: goplus/xgo

v1.6.6

23 Feb 14:22
21033f0

Choose a tag to compare

What's Changed

DQL (DOM Query Language) (#2611):

changes:

  • rm github.com/goplus/xgo/parser/iox by @xushiwei in #2655

Full Changelog: v1.6.5...v1.6.6

v1.6.5

18 Feb 06:00
fb0f83f

Choose a tag to compare

What's Changed

DQL (DOM Query Language) (#2611):

encoding (Domain Text Literal):

changes:

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

16 Feb 07:09
b68abc2

Choose a tag to compare

What's Changed

DQL (DOM Query Language) (#2611):

encoding (Domain Text Literal):

other features:

documents:

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

29 Jan 12:38
9a88fde

Choose a tag to compare

What's Changed

features:

docs:

changes:

Full Changelog: v1.6.1...v1.6.2

v1.6.1

25 Jan 01:48
2d2c395

Choose a tag to compare

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, $T \equiv (T) \equiv (name\ T)$. Whether you are defining a single integer or a complex set of parameters, you are working within the same tuple-based framework.

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:

feature specs:

demos:

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
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 200

deps:

  • chore(deps): bump github.com/goplus/gogen v1.20.6 by @xushiwei in #2564

Full Changelog: v1.6.0...v1.6.1

v1.6.0

19 Jan 04:57
b9abe9c

Choose a tag to compare

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:

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 -trimpath and mod_timestamp for reproducible builds by @aofei in #2511
  • chore(release): migrate to dockers_v2 from 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

18 Jan 01:53
4923495

Choose a tag to compare

v1.6.0-pre.3 Pre-release
Pre-release

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:

Full Changelog: v1.6.0-pre.2...v1.6.0-pre.3

v1.6.0-pre.2

15 Jan 10:23
8029659

Choose a tag to compare

v1.6.0-pre.2 Pre-release
Pre-release

What's Changed

  • ci: remove deprecated VERSION file dependency from release workflow by @xgopilot[bot] in #2535

Full Changelog: v1.6.0-pre.1...v1.6.0-pre.2

v1.6.0-pre.1

15 Jan 07:13
ffb7b08

Choose a tag to compare

v1.6.0-pre.1 Pre-release
Pre-release

What's Changed

release tools:

  • feat: implement automated version management by @xgopilot[bot] in #2526

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 -trimpath and mod_timestamp for reproducible builds by @aofei in #2511
  • chore(release): migrate to dockers_v2 from 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

02 Dec 23:47
24930fd

Choose a tag to compare

What's Changed

features:

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:

New Contributors

Full Changelog: v1.5.2...v1.5.3