Skip to content

Releases: goplus/gop

v1.1.10

11 Nov 10:19
db289a9
Compare
Choose a tag to compare

new features:

  • code coverage of unit test (only support in Go1.20 or later) (#1510)
  • gop go -ignore-notated-error (#1518)
  • gop serve: run gop in langserver mode (#1522)
  • gop/x/jsonrpc2 (#1519 #1522 #1525 #1526)
  • gop/x/langserver (#1524 #1525 #1527)
  • gop/parser: ParseFSEntry/ParseEntry (#1529)
  • typesutil: ExprString (#1531)
  • typesutil: DeleteObjects, CorrectTypesInfo (#1538)
  • typesutil: Check support conf.Error (#1514 #1515 #1517)
  • typesutil.Checker: config changed (use gop.mod) (#1528)
  • typesutil/typeparams (#1533)
  • modfetch.SetDebug (#1535)
  • cl/internal/typesutil.NewTypeAndValue (#1532)

github actions:

changes:

  • refactor: xxxError use Pos instead of Position (#1509)
  • workflows: release-build use go-version 1.18 (#1511)
  • gop/x/typesutil: Checker.Files always check go files (#1520)
  • mv ClassFileExt: parser => cl (#1530)
  • cl: preloadGopFile no change classfile ast (#1521)
  • parser: fix parseGlobalStmts EOF check (#1512)
  • parser: fix parsePrimaryExpr check literal value (#1513)
  • mod: github.com/goplus/c2go v0.7.17
  • mod: github.com/goplus/gox v1.13.0
  • mod: github.com/goplus/mod v0.11.9

v1.1.9

01 Nov 05:56
62168d1
Compare
Choose a tag to compare

new features:

changes:

  • gop/ast.File.Pos() fix (#1471)
  • gop/parser: parsePrimaryExpr fix LiteralValue check (#1493)
  • gox: newScope support start..end (#1491 goplus/gogen#294)
  • gop: fix restore mod (#1502)
  • update gop_autogen.go import style (#1489 goplus/gogen#293)
  • TestSpxPkgOverload (#1468, goplus/gogen#303)
  • TestGenericTypeCompositeLit (#1495)
  • mod: github.com/fsnotify/fsnotify v1.7.0
  • mod: github.com/goplus/mod v0.11.8
  • mod: github.com/goplus/gox v1.12.8

v1.1.8

10 Oct 15:24
91c8825
Compare
Choose a tag to compare

new features:

github actions:

drafts:

changes:

  • fix: type assignment error doesn't not dump position (#1429 #1430)
  • cl fix: compileCallArgs recover check (#1457)
  • cl fix: gmxSettings.getScheds check self for func setBodyHandler (#1459 #1460)
  • gengo: dump error by dir (#1455)
  • ast.File: NoEntrypoint => ShadowEntry (#1447)
  • support go1.21 (#1433)
  • mod: github.com/goplus/gox v1.12.5
  • mod: github.com/goplus/mod v0.11.7
  • mod: github.com/qiniu/x v1.13.1
  • mod: golang.org/x/tools v0.14.0

v1.1.7

23 Sep 10:49
67a8723
Compare
Choose a tag to compare

new features:

changes:

  • main.spx: change generated class name from _main to Game (#1406)
  • printer: Fprint(*ast.GenDecl) bugfix (#1420 #1419)
  • parser: defaultClassKind fix main.spx (#1409)
  • parser: fix parseDecl token.FUNC error (#1412 #1413)
  • cl: classfile member.member call bug (#1414 #1415)

v1.1.6

26 Aug 17:37
dff1ae3
Compare
Choose a tag to compare

incompatible changes:

  • classfile: support multiple work-classes (#1380)
  • classfile: register => import (#1404)
  • classfile: rename .gopx => .gox (#1403)
  • classfile: IsClass => ClassKind (#1404)

new features:

  • classfile: support embed type (starExpr/selectorExpr) (#1386)
  • classfile: field var support tag (#1393)
  • classfile: support main.spx (#1404)
  • compiler check untyped overflows for int128/uint128 (#1384)

changes:

  • fix: check isInChina on Windows (#1387 #1397)
  • update github action workflow files (#1388)
  • bugfix: classfile .gopx var check error (#1391)
  • parser: check token var (#1395)
  • cl: compileCallExpr check one arg for ast.SliceLit (#1398)
  • cl: overload func match check (#1402)

v1.1.5

17 Jun 12:25
ce1cb7a
Compare
Choose a tag to compare

new features:

  • support Error wrapping (#1347)
  • support typeparam caller (#1352)
  • support .gopx and classfile embed type (#1377)
  • gopfmt: support classfile (#1378)
  • fix test typeparams for go1.20 (#1359)

changes:

  • parser: fix command style ! (Not) expr (#1361)
  • fix empty struct argument call for gop style (#1368)
  • cl: loadVars check recover (#1372)
  • docs: update homebrew install note (#1351)
  • mod: github.com/goplus/gox v1.11.35
  • mod: github.com/goplus/c2go v0.7.13
  • mod: github.com/goplus/libc v0.3.13

v1.1.3

04 Aug 06:13
8455cf6
Compare
Choose a tag to compare

v1.1.2

19 Jun 10:25
45d7bc8
Compare
Choose a tag to compare

v1.1.0

06 Jun 07:24
85b1b0f
Compare
Choose a tag to compare

Go+ v1.1.0 vs. Go+ v1.0.39

First, it introduces the github.com/goplus/mod module. This module provides support for Go/Go+ module related capabilities. It can be thought of as enhancements to golang.org/x/mod which include:

Second, it has improved gop mod (module management) related commands, especially the gop mod tidy command needs to be considered in many cases.

Third, it enhances the completeness of gop command functions such as gop build/install/run/test, which are mainly reflected in:

  • Support for remote packages. For example, in Go+ v1.0 you could only gop run local directories or files, now gop run is supported to run a remote package.
  • Consistency of gop build/install/run/test. Previously, the codes of gop run and gop build/install were written separately, lacking a unified support framework, and their behaviors would be different. Now they are unified into the same implementation framework.
  • The gop cache bug has been eliminated. In Go+ v1.0, due to the poor implementation performance of the import package, the gop cache module cache was introduced, which led to some bugs in module update detection, and an infinite loop of importing some complex packages.

Fourth, it adds some syntax features that v1.0 does not have. This mainly includes:

  • Overloading of ++, -- operators is supported.
  • Expression type() is supported to represent the zero value of type type. For example, string() is equivalent to "", int32() is equivalent to int32(0), and so on.
  • Supports uint128, int128 types.
  • Supports the any type, which is equivalent to the empty interface.

Fifth, it adds support for comment instructions in structure and function headers. E.g:

//go:notinheap
type S struct{ x int }

//go:noinline
//go:uintptrescapes
func test(s string, p, q uintptr, rest ...uintptr) int {
    ...
}

Of course, the comment instruction still needs to be further improved. For example, conditional compilation instructions, etc., are currently not implemented.

Sixth, fix many bugs. It includes Go+ bugs (issue #888, #1056, #1228, #1243, etc.) and new test cases have been added in go1.8 version, which may not all pass in Go+ v1.0 version (issues #1195, #1196, #1197, #1198, etc.).

Seventh, it supports Go/Go+ hybrid projects. For details, please refer to the gop/testdata/mixgo example. The following is an introduction to this in the project's README file:

image

Eighth, support for calling C from Go+. This includes:

  • The gop c command (equivalent to the stand-alone c2go command) can be used to convert a C project to a Go project.
  • import "C" and import "C/xxx" are used to import a C project converted by c2go. where import "C" is short for import "C/github.com/goplus/libc".
  • The C"xxx" syntax represents C-style string constants.

Here is an example to show how Go+ interacts with C.

import "C"

C.printf C"Hello, c2go!\n"
C.fprintf C.stderr, C"Hi, %7.1f\n", 3.14

In this example we call two C standard functions printf and fprintf, passing a C variable stderr and two C strings in the form of C"xxx" (a Go+ syntax to represent C-style strings).

Run gop run . to see the output of this example:

Hello, c2go!
Hi,     3.1

Of course, the current Go+ support for C is only a preview version, not to the extent that it is actually available in engineering. As far as libc is concerned, the current migration progress is only about 5%, and it is just the beginning.

In the upcoming Go+ v1.2 version planning, complete support for C is listed as a top priority. Of course, support for cgo and Go templates is also under planning, which is a crucial capability enhancement for Go/Go+ hybrid projects.

Release v1.1.0-rc3

05 Jun 09:09
fc15a95
Compare
Choose a tag to compare