Skip to content

Releases: goplus/xgo

v1.3.7

27 Mar 08:44
2bf4ec5
Compare
Choose a tag to compare

What's Changed

features:

changes:

ci & tools:

deps:

  • build(deps): bump github.com/goplus/gogen 1.16.9 by @dependabot in #2209
  • build(deps): bump github.com/goplus/llgo 0.10.1 by @dependabot in #2194

Full Changelog: v1.3.6...v1.3.7

v1.3.6

15 Mar 23:30
702e9cb
Compare
Choose a tag to compare

What's Changed

features:

changes:

deps:

  • build(deps): bump github.com/goplus/llgo from 0.9.9 to 0.10.0 by @dependabot in #2156

Full Changelog: v1.3.5...v1.3.6

v1.3.5

01 Mar 16:37
6ee6a0f
Compare
Choose a tag to compare

What's Changed

features:

documents:

changes:

Full Changelog: v1.3.1...v1.3.5

v1.3.1

22 Feb 01:27
a30942b
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.3.0...v1.3.1

v1.3.0

16 Feb 15:40
e919c9d
Compare
Choose a tag to compare

What's Changed

documents:

features:

changes:

deps:

  • build(deps): bump github.com/fsnotify/fsnotify 1.8.0 by @dependabot in #2002
  • build(deps): bump github.com/goplus/llgo 0.9.9 by @dependabot in #2056
  • build(deps): bump github.com/goplus/gogen 1.16.6 by @dependabot in #2085
  • build(deps): bump github.com/goplus/mod 0.13.17 by @dependabot in #2097

ci & tools:

New Contributors

Full Changelog: v1.2.6...v1.3.0

v1.3.0-pre.2

06 Sep 00:31
370a8e4
Compare
Choose a tag to compare
v1.3.0-pre.2 Pre-release
Pre-release

highlights:

docs:

changes:

  • mod: rollback golang.org/x/tools v0.22.0 => v0.19.0 (#1966)
  • mod: github.com/goplus/llgo v0.9.7
  • cl: fix slicelit for assignStmt/returnStmt (#1959)
  • cl: fix compositeLit for assignStmt (#1960)
  • cl: fix compileCompositeLitEx struct for sliceLit/mapLit (#1961)

v1.3.0-pre.1

15 Jul 15:14
43ecd08
Compare
Choose a tag to compare
v1.3.0-pre.1 Pre-release
Pre-release

highlights:

features:

changes:

  • cl: GetFileClassType: fix isProj must check name is main (#1862)
  • cl: preloadFile ast.OverloadFuncDecl handle error (#1865)
  • cl: record def for ast.OverloadFuncDecl (#1866)
  • cl: Go+ overload func support pos (#1868)
  • cl: fix record ast.OverloadFuncDecl has funcLit only (#1869)
  • cl: support declared function in classfile's overload decl (#1875)
  • cl: _testgop (to be continued (#1888)
  • x/typesutil:modify info.Overloads to point to the overload decl (#1872)
  • gop/ast: fix (*ast.File).End check shadow no entry (#1860)
  • update env.MainVersion to 1.3 (#1928 #1930)
  • testdata => demo (#1920)
  • cmd/chore (#1885)
  • publish (docker): remove gopfmt from the baked Docker image (#1934)
  • publish (goreleaser): remove gopfmt (#1932)
  • make test: make cmd/TestInstallInNonGitRepo not affected by actual major.minor versions (#1937)
  • make test: fix cmd/TestInstallInNonGitRepo/install_with_VERSION_file (#1930)
  • goreleaser: remove gopfmt (#1932)
  • mod: github.com/goplus/gogen v1.16.0
  • mod: github.com/goplus/llgo v0.9.1
  • mod: github.com/goplus/mod v0.13.12
  • mod: golang.org/x/tools v0.22.0

v1.2.6

12 Apr 19:30
4fdc568
Compare
Choose a tag to compare

highlights:

  • Improve compilation speed through disk cache, especially under windows (#1827, [email protected]).
  • Go+ now supports static methods. This allows Go+ classfile to provide "global functions", such as T.new or T.start, without introducing a separate file.
  • Times loop: for :N { ... }. Previously you had to use for range :N { ... }.
  • Pkgsite: Beta version of https://pkg.gop.dev/ is released.

features:

ci/cd tools:

  • official Docker image (#1819 #1841)
  • change build artifacts name (#1838)
  • cover Go 1.22 in test (#1836)
  • update macOS version to "macos-latest" (#1844)

changes:

  • gop: NewDefaultConf: useCacheFile param; conf.UpdateCache (#1827)
  • cl: compileExpr/compileExprLHS panic code error (#1832)
  • cl: correct anonymous overloaded function naming (#1833)
  • cl, printer: set astFnClassfname shadow and not to print (#1853)
  • cl, gop: export GetFileClassType (#1852)
  • cl: gmxProject.hasMain (#1817)
  • mod: github.com/goplus/c2go v0.7.26
  • mod: github.com/goplus/gogen v1.15.2
  • mod: github.com/goplus/mod v0.13.10
  • mod: github.com/qiniu/x v1.13.10

v1.2.5

09 Mar 15:05
f6596aa
Compare
Choose a tag to compare

highlights:

  • operator ${name}: You can customize the semantics of ${name}. For example, in .gsh classfile, ${name} means os.Getenv("<name>"), and in .yap classfile, ${name} means ctx.Param("<name>").
  • The web framework YAP released v0.8.0. It introduces YAP classfile v2 which is particularly simple and easy to use. See blow for details.

features:

  • classfile: generate gameClass.Main() (#1814)
  • classfile: this.Sprite.Main(...) or this.Game.MainEntry(...) (#1794)
  • classfile: this.Classfname() (#1794 #1797)
  • classfile: gsh exec (#1757)
  • cl: ${name} - operator Gop_Env (#1776 #1806 #1810)
  • cl: binaryOp ->, <> (#1763 #1764 #1766)
  • cl: compileCompositeLit: support type-inter for map (#1756)
  • cl: rec.Scope - record types scope (#1759 #1767 #1772 #1774)
  • cl: types record check selection/index expr is addressable (#1785 #1788)
  • cl: don't define GopPackage for main package (#1796)
  • cl: astFnClassfname, astEmptyEntrypoint (#1811 #1812)
  • format interface{}: rm newline (#1761 #1769 #1791)
  • x/typesutil: add conf.IgnoreFuncBodies (#1783)
  • x/typesutil: add conf.UpdateGoTypesOverload (#1793)
  • qiniu/x/stringutil (#1777 #1778 #1779)

ci/cd tools:

  • check goreleaser file lists (#1802)
  • ci: compatible with version difference of patch release (#1804 #1808)

changes:

  • rename github.com/goplus/gox => github.com/goplus/gogen (#1798)
  • cl: inMainPkg (#1789)
  • cl: isGoxTestFile (#1790)
  • cl: for..range body use vblock for new scope (#1760)
  • cl: gogen new api case/typeCase/commCase (#1762)
  • cl: commentStmt: fix ast.GenDecl pos (#1768)
  • cl: commentStmt: skip noPos (#1794)
  • cl: TestErrStringLit (#1799)
  • parser: fix StringLit extra check (#1782)
  • ast: walk add *IndexListExpr (#1773)
  • ast: fix forPhrase.end (#1775)
  • x/typesutil: check for need goinfo (#1784)
  • x/typesutil: TestTypeAndValue, TestConvErr (#1800)
  • mod: github.com/goplus/c2go v0.7.25
  • mod: github.com/goplus/gogen v1.15.1
  • mod: github.com/goplus/mod v0.13.9
  • mod: github.com/qiniu/x v1.13.9
  • mod: golang.org/x/tools v0.19.0

YAP released v0.8.0. It introducesYAP classfile v2 which is particularly simple and easy to use. Let’s compare YAP in Go, YAP classfile v1 and YAP classfile v2.

Router and Parameters

demo in Go (hello.go):

import "github.com/goplus/yap"

func main() {
	y := yap.New()
	y.GET("/", func(ctx *yap.Context) {
		ctx.TEXT(200, "text/html", `<html><body>Hello, YAP!</body></html>`)
	})
	y.GET("/p/:id", func(ctx *yap.Context) {
		ctx.JSON(200, yap.H{
			"id": ctx.Param("id"),
		})
	})
	y.Run("localhost:8080")
}

demo in YAP classfile v1 (main.yap):

get "/", ctx => {
	ctx.html `<html><body>Hello, YAP!</body></html>`
}
get "/p/:id", ctx => {
	ctx.json {
		"id": ctx.param("id"),
	}
}

run "localhost:8080"

demo in YAP classfile v2 (get.yap, get_p_#id.yap):

html `<html><body>Hello, YAP!</body></html>`
json {
	"id": ${id},
}

YAP Template

demo in Go (blog.go, article_yap.html):

import (
	"os"

	"github.com/goplus/yap"
)

y := yap.New(os.DirFS("."))

y.GET("/p/:id", func(ctx *yap.Context) {
	ctx.YAP(200, "article", yap.H{
		"id": ctx.Param("id"),
	})
})

y.Run(":8080")

demo in YAP classfile v1 (main.yap, article_yap.html):

get "/p/:id", ctx => {
	ctx.yap "article", {
		"id": ctx.param("id"),
	}
}

run ":8888"

demo in YAP classfile v2 (get_p_#id.yap, article_yap.html):

yap "article", {
	"id": ${id},
}

See yap: Yet Another HTTP Web Framework for more details.

v1.2.2

17 Feb 15:44
a710792
Compare
Choose a tag to compare

highlights:

  • classfiles: One language can change the whole world. Go+ is a "DSL" for all domains. It introduces classfile to abstract domain knowledge. See Go+ Classfiles.
  • gsh as builtin classfile: It means now you can write shell script in Go+. It supports all shell commands. You don't need a go.mod file, just enter gop run XXX.gsh directly to run. See gsh: Go+ DevOps Tools.
  • Go+ module documents on pkg.go.dev: All Go+ modules can appear on pkg.go.dev without any differences as Go modules. Derived from Go and easy to build large projects from its good engineering foundation (vscode plugin, language server, debugger, code coverage, module, documentation, etc.), Go+ is ready for large projects.

features:

  • cl: support Gop_Exec (#1736 #1737 #1741 #1744)
  • cl: mayBuiltin new/delete (#1735)
  • cl: commentFunc set //line before doc (#1738 #1746)
  • cl: gmxMainFunc: force remove //line comments for main func (#1742 #1743)
  • parser: ParseEntries (#1749)
  • gop: NewDefaultConf: add (noTestFile bool) param (#1745)
  • gop run: support build dir (#1748)
  • classfile: .gsh as builtin classfile (#1749)
  • classfile: _test.gox add App.M() (#1753)
  • document: classfile (#1750 #1751 #1752)

changes: