Skip to content

Go 1.8 support (version bump to GopherJS 1.8-1). #552

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 20 commits into from
Feb 17, 2017
Merged

Go 1.8 support (version bump to GopherJS 1.8-1). #552

merged 20 commits into from
Feb 17, 2017

Conversation

dmitshur
Copy link
Member

@dmitshur dmitshur commented Dec 13, 2016

This is a WIP PR to track work to support Go 1.8. go1.8beta1 has been released.

Each commit is bite-sized, with rationale and description, and fixes a specific issue.

It's now at a stage where only some of the standard library tests are failing. I'll make a table to track remaining work.

Update: All failing tests have been fixed, but there are some known TODOs remaining in code.

  • database/sql/driver

    Test Failure Details
    --- FAIL: TestValueConverters (0.10s)
      	types_test.go:77: test 20: driver.defaultConverter(driver.i(9)) = 9 (driver.i); want 9 (int64)
      	types_test.go:77: test 23: driver.defaultConverter(driver.bs([1])) = [1] (driver.bs); want [1] ([]uint8)
      FAIL
      FAIL	database/sql/driver	0.623s
  • hash/crc32

  • math

  • io

  • reflect

  • runtime

  • net/rpc/jsonrpc

    Test Failure Details
    /home/ubuntu/gopherjs/test.342850936:4
      Error.stackTraceLimit=Infinity;var $global,$module;if(typeof window!=="undefined"){$global=window;}else if(typeof self!=="undefined"){$global=self;}else if(typeof global!=="undefined"){$global=global;$global.require=require;}else{$global=this;}if($global===undefined||$global.Array===undefined){throw new Error("no global object found");}if(typeof module!=="undefined"){$module=module;}var $packages={},$idCounter=0;var $keys=function(m){return m?Object.keys(m):[];};var $flushConsole=function(){};var $throwRuntimeError;var $throwNilPointerError=function(){$throwRuntimeError("invalid memory address or nil pointer dereference");};var $call=function(fn,rcvr,args){return fn.apply(rcvr,args);};var $makeFunc=function(fn){return function(){return $externalize(fn(this,new($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments,[]))),$emptyInterface);};};var $mapArray=function(array,f){var newArray=new array.constructor(array.length);for(var i=0;iError: runtime error: native function not implemented: sync.runtime_SemacquireMutex
    at $callDeferred (/home/ubuntu/gopherjs/test.342850936:4:28973)
    at $panic (/home/ubuntu/gopherjs/test.342850936:4:29597)
    at $throwRuntimeError (/home/ubuntu/gopherjs/test.342850936:7:3381)
    at $packages.sync.AE (/home/ubuntu/gopherjs/test.342850936:11:12427)
    at $packages.sync.Q.ptr.Lock (/home/ubuntu/gopherjs/test.342850936:11:9096)
    at $packages.net/rpc.AL.ptr.sendResponse (/home/ubuntu/gopherjs/test.342850936:93:29773)
    at $packages.net/rpc.AI.ptr.call (/home/ubuntu/gopherjs/test.342850936:93:32372)
    at f (/home/ubuntu/gopherjs/test.342850936:4:1231)
    at $goroutine (/home/ubuntu/gopherjs/test.342850936:4:30195)
    at Timeout.$runScheduled [as _onTimeout] (/home/ubuntu/gopherjs/test.342850936:4:30964)
    at tryOnTimeout (timers.js:224:11)
    at Timer.listOnTimeout (timers.js:198:5)
    FAIL net/rpc/jsonrpc 1.668s

  • sync

    Test Failure Details
    --- FAIL: TestMutexMisuse (0.01s)
      /home/ubuntu/gopherjs/test.238107529:4
      Error.stackTraceLimit=Infinity;var $global,$module;if(typeof window!=="undefined"){$global=window;}else if(typeof self!=="undefined"){$global=self;}else if(typeof global!=="undefined"){$global=global;$global.require=require;}else{$global=this;}if($global===undefined||$global.Array===undefined){throw new Error("no global object found");}if(typeof module!=="undefined"){$module=module;}var $packages={},$idCounter=0;var $keys=function(m){return m?Object.keys(m):[];};var $flushConsole=function(){};var $throwRuntimeError;var $throwNilPointerError=function(){$throwRuntimeError("invalid memory address or nil pointer dereference");};var $call=function(fn,rcvr,args){return fn.apply(rcvr,args);};var $makeFunc=function(fn){return function(){return $externalize(fn(this,new($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments,[]))),$emptyInterface);};};var $mapArray=function(array,f){var newArray=new array.constructor(array.length);for(var i=0;iError: runtime error: native function not implemented: syscall.runtime_BeforeFork
    at $callDeferred (/home/ubuntu/gopherjs/test.238107529:4:28973)
    at $panic (/home/ubuntu/gopherjs/test.238107529:4:29597)
    at $b (/home/ubuntu/gopherjs/test.238107529:32:67954)
    at $callDeferred (/home/ubuntu/gopherjs/test.238107529:4:29144)
    at $panic (/home/ubuntu/gopherjs/test.238107529:4:29597)
    at $throwRuntimeError (/home/ubuntu/gopherjs/test.238107529:7:3352)
    at $packages.syscall.AN (/home/ubuntu/gopherjs/test.238107529:13:19394)
    at $packages.syscall.AP (/home/ubuntu/gopherjs/test.238107529:13:20425)
    at $packages.syscall.BC (/home/ubuntu/gopherjs/test.238107529:13:30325)
    at Object.$packages.syscall.BE [as StartProcess] (/home/ubuntu/gopherjs/test.238107529:13:32168)
    at $packages.os.AO (/home/ubuntu/gopherjs/test.238107529:16:14753)
    at Object.$packages.os.AN [as StartProcess] (/home/ubuntu/gopherjs/test.238107529:16:11036)
    at $packages.os/exec.M.ptr.Start (/home/ubuntu/gopherjs/test.238107529:29:17373)
    at $packages.os/exec.M.ptr.Run (/home/ubuntu/gopherjs/test.238107529:29:12460)
    at $packages.os/exec.M.ptr.CombinedOutput (/home/ubuntu/gopherjs/test.238107529:29:23335)
    at $packages.sync_test.AU (/home/ubuntu/gopherjs/test.238107529:34:34594)
    at $packages.testing.CG (/home/ubuntu/gopherjs/test.238107529:32:69409)
    at $goroutine (/home/ubuntu/gopherjs/test.238107529:4:30195)
    at Timeout.$runScheduled [as _onTimeout] (/home/ubuntu/gopherjs/test.238107529:4:30964)
    at tryOnTimeout (timers.js:224:11)
    at Timer.listOnTimeout (timers.js:198:5)
    FAIL sync 0.705s

@dmitshur
Copy link
Member Author

dmitshur commented Dec 14, 2016

Looking at fixing reflect package. It's pretty critical, and fixing it first might resolve some other problems (e.g., the database/sql failing test is likely a consequence of reflect.DeepEqual having a problem).

It currently fails without much output in CI:

$ gopherjs test --short --minify --run='^Test' reflect
FAIL	reflect	0.923s

Adding -v makes me see the problem is in TestDeepEqual:

$ gopherjs test -v --run=TestDeepEqual reflect
=== RUN   TestDeepEqual
FAIL	reflect	0.718s

Also, we may need to add support for the new reflect.Swapper. It seems the standard library implementation only has an implementation that requires use of unsafe package (see https://tip.golang.org/src/reflect/swapper.go). But we can use the "safe" one from https://github.com/camlistore/go4/blob/master/reflectutil/swapper.go (huge thanks to Brad for implementing that version).

@dmitshur
Copy link
Member Author

dmitshur commented Dec 14, 2016

Narrowed down the cause of TestDeepEqual not completing. It's these new test cases, added in 1.8:

var deepEqualTests = []DeepEqualTest{
	// ... all the old ones continue to work okay.
	// but the new "Possible loops" cause trouble.
	// Commenting them out causes TestDeepEqual to pass.

	// Possible loops.
	{&loop1, &loop1, true},
	{&loop1, &loop2, true},
	{&loopy1, &loopy1, true},
	{&loopy1, &loopy2, true},
}

After that, only TestSwapper needs to be made to pass, and all of reflect tests succeed.

@dmitshur
Copy link
Member Author

dmitshur commented Dec 14, 2016

More specifically, it's only these cases that are problematic:

// Possible loops.
{&loop1, &loop1, true}, // ok
{&loop1, &loop2, true}, // fails
{&loopy1, &loopy1, true}, // ok
{&loopy1, &loopy2, true}, // fails

And TestSwapper passes with a safe swapper implementation.

@dmitshur
Copy link
Member Author

Great, CI is passing now! ✅

Next up is addressing remaining TODOs.

Most of the failures that I fixed weren't regressions in behavior with 1.8, but rather known/existing issues being triggered. I didn't have to do much to get previously working things to continue to work.

But first, I will rewrite history and squash some related commits to make the PR smaller and each commit more logical.

@dmitshur
Copy link
Member Author

dmitshur commented Dec 14, 2016

Ok, I've done an interactive rebase to squash/re-arrange commits and clean up the history to have more logical, well separated changes in each commit.

Since this is now passing CI, do you want to look over it @neelance and leave any first-order comments that you might have?

Next up we should look at the remaining TODOs inside the code and see if we can do anything about them.

That said, for anyone eager to try this go1.8 branch and test it out, feel welcome to do that. Report any issues either here (for small things) or as issues (label with go1.8 as needed).

Copy link
Member

@neelance neelance left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good so far. Added some comments, except where you already have TODOs.

@@ -90,8 +90,6 @@ func importWithSrcDir(path string, srcDir string, mode build.ImportMode, install
pkg.GoFiles = []string{"rand.go", "util.go"}
case "crypto/x509":
pkg.CgoFiles = nil
case "hash/crc32":
pkg.GoFiles = []string{"crc32.go", "crc32_generic.go"}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yey.

// should override TestGamma specifically and not the package-wide tolerances,
// because this will cause many other tests to be less accurate. Or maybe this
// is fine?
func close(a, b float64) bool { return tolerance(a, b, 4e-14) }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm still wondering where exactly we're losing precision. I guess it is because we're using some JS native math functions which are implemented slightly differently than the Go ones. Investigate?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any idea what's going on here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made #589 to track this.


package reflect

func Swapper(slice interface{}) func(i, j int) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reflect.Swapper, interesting addition. I guess this is because of sort?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this is to enable the new way of sorting in 1.8.

https://beta.golang.org/pkg/sort/#example_Slice

func main() {
m := testing.MainStart(matchString, tests, benchmarks, examples)
m := testing.MainStart(testdeps.TestDeps{}, tests, benchmarks, examples)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How is matchString implemented now? As far as I remember this was done to avoid the dependency from testing to regexp.

Copy link
Member Author

@dmitshur dmitshur Dec 20, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The commit message of 3b29828 says:

See golang/go@c56cc9b?w=1.

The commit message of that go commit explains what happened.

It seems that it's still implemented the same way, using regexp. They've just shuffled imports around into testdeps package.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, I like it.

@dmitshur dmitshur changed the title WIP: Go 1.8 support. Go 1.8 support. Jan 5, 2017
@dmitshur
Copy link
Member Author

One minor issue I believe I'm seeing on 1.8 branch is that there's the following warning showing up:

image

In situations where it shouldn't be. I don't think it was showing up in 1.7. This is not fully confirmed yet.

See golang/go@c56cc9b?w=1.

Fixes the following issue when running gopherjs test:

	_testmain.go:162:25: cannot use matchString (value of type func(pat string, str string) (result bool, err error)) as testing.testDeps value in argument to testing.MainStart: missing method MatchString
By now, the crc32 package makes use of functions implemented
in architecture-specific files. GopherJS ends up taking on the
generic "other architectures" configuration that works when
there isn't an architecture-specific CRC32-IEEE algorithm,
nor an architecture-specific CRC32-C algorithm.

In the future, it's possible hash/crc32 performance can be improved
by doing something architecture-specific, but this will do for now.

Fixes the following build issue for hash/crc32 package:

	$ gopherjs build hash/crc32
	../../../usr/local/go/src/hash/crc32/crc32.go:83:23: undeclared name: archAvailableCastagnoli
	../../../usr/local/go/src/hash/crc32/crc32.go:86:3: undeclared name: archInitCastagnoli
	../../../usr/local/go/src/hash/crc32/crc32.go:87:22: undeclared name: archUpdateCastagnoli
	../../../usr/local/go/src/hash/crc32/crc32.go:107:17: undeclared name: archAvailableIEEE
	../../../usr/local/go/src/hash/crc32/crc32.go:110:3: undeclared name: archInitIEEE
	../../../usr/local/go/src/hash/crc32/crc32.go:111:16: undeclared name: archUpdateIEEE
There were some new actions added in Go 1.8 (and 1.7), such as
"errorcheckwithauto" in golang/go@d586aae.
Since new action wasn't one of the ones we'd skip, it caused
TestGoRepositoryCompilerTests to fail with errors like:

	# go run run.go -- live.go
	unexpected skip for live.go:

Instead, skip all actions (even unfamiliar ones) except the ones
we explicitly want to run.
There were 3 failing tests.

One was a modified old test that wasn't previously run due to a build
constraint (that has been removed in 1.8). It fails due to a compiler
bug, see #551 that tracks it.

Two were new tests that use unsupported packages/funcs (such as "unsafe",
runtime.FuncForPC, runtime.Callers) and failed as a result.
…tion, implement runtime_SemacquireMutex.

SetMutexProfileFraction was added in Go 1.8, and needs to be explicitly
added to "runtime" package in GopherJS, because GopherJS doesn't inherit
most of upstream .go files of "runtime" package.

Document that it's not supported at this time.

Implement runtime_SemacquireMutex with same code as runtime_Semacquire.

Fixes many build errors.

Fixes net/rpc/jsonrpc tests:

	$ gopherjs test net/rpc/jsonrpc

	/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.438174805:1414
	          throw new Error(msg);
	                ^
	Error: runtime error: native function not implemented: sync.runtime_SemacquireMutex
	    at $callDeferred (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.438174805:1414:17)
	    at $panic (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.438174805:1453:3)
	    at $throwRuntimeError (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/runtime.go:31:4)
	    at $packages.sync.runtime_SemacquireMutex (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.438174805:3109:3)
	    at $packages.sync.Mutex.ptr.Lock (/sync/mutex.go:87:5)
	    at $packages.net/rpc.Server.ptr.sendResponse (/net/rpc/server.go:365:3)
	    at $packages.net/rpc.service.ptr.call (/net/rpc/server.go:394:3)
	    at f (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.438174805:52:21)
	    at $goroutine (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.438174805:1473:19)
	    at Timeout.$runScheduled [as _onTimeout] (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.438174805:1514:7)
	    at tryOnTimeout (timers.js:224:11)
	    at Timer.listOnTimeout (timers.js:198:5)
	FAIL	net/rpc/jsonrpc	1.813s
… GOARCH=js.

We cannot run tests that do exec.Command when GOARCH=js. Instead of
disabling individual tests, update testenv.HasExec to say no.

TestMutexMisuse in sync package was one such test. It begins with:

	func TestMutexMisuse(t *testing.T) {
		testenv.MustHaveExec(t)

As a result of this change, it no longer runs and fixes the following
issue:

	$ gopherjs test sync
	--- FAIL: TestMutexMisuse (0.01s)

/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/
test.017024481:1414
	          throw new Error(msg);
	                ^
	Error: runtime error: native function not implemented:
syscall.runtime_BeforeFork
	    at $callDeferred
(/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs
/test.017024481:1414:17)
	    at $panic
(/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs
/test.017024481:1453:3)
	    at $b (/testing/testing.go:644:5)
	    at $callDeferred
(/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs
/test.017024481:1426:23)
	    at $panic
(/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs
/test.017024481:1453:3)
	    at $throwRuntimeError
(/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs
/runtime.go:31:4)
	    at $packages.syscall.runtime_BeforeFork
(/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs
/test.017024481:4084:3)
	    at $packages.syscall.forkAndExecInChild (/syscall/exec_bsd.go:68:3)
	    at $packages.syscall.forkExec (/syscall/exec_unix.go:193:3)
	    at Object.$packages.syscall.StartProcess (FAIL	sync	1.051s
These were implemented in pure Go before. In Go 1.8, they're now using
stubs and are implemented in assembly. This causes the following errors
in GopherJS:

	Error: runtime error: native function not implemented: math.Cosh
	Error: runtime error: native function not implemented: math.Sinh
	Error: runtime error: native function not implemented: math.Tanh

Implement them via JavaScript math object, analogous to Cos, Sin, Tan.
…ix TestGamma.

Before this change, TestGamma fails with:

	$ gopherjs test --short --minify --run='^Test' math
	--- FAIL: TestGamma (0.08s)
		all_test.go:2234: Gamma(171) = 7.257415615307958e+306, want 7.257415615307999e+306
		all_test.go:2234: Gamma(171.6) = 1.5858969096672286e+308, want 1.5858969096672565e+308
		all_test.go:2234: Gamma(171.624) = 1.794211759924792e+308, want 1.7942117599248104e+308
		all_test.go:2234: Gamma(-171.5) = 1.93162654317124e-310, want 1.9316265431712e-310
	FAIL
	FAIL	math	0.786s

The tolerances are defined with these values upstream in Go 1.8:

	func close(a, b float64) bool      { return tolerance(a, b, 1e-14) }
	func veryclose(a, b float64) bool  { return tolerance(a, b, 4e-16) }
…me.SetFinalizer.

Document that runtime.SetFinalizer is unsupported.
Based on go4 version, with fast path from 1.8 standard library.

Fixes TestSwapper.
Allows all reflect tests to pass.

TODO: Fix the underlying issue.

We may need to implement pointer cycle detection here.
…terTests testcases.

Allows all database/sql/driver tests to pass.

TODO: Fix the underlying issue.
It fails when source map support is disabled, but passes when it's
enabled. But CI has it disabled at this time.
Its functionality is now available in standard library as of Go 1.8.
See kardianos/osext#20.
Implementation is noop and does not change max stack, instead it always
returns the initial value. This is similar to SetGCPercent.

Package runtime/debug is not officially supported, so there are no hard
requirements for functionality here.

Use initial value for 32-bit value, which is 250 MB (but 250000000).
Source: https://github.com/golang/go/blob/ea7d9e6a52ca64c200dcc75621e75f209ceceace/src/runtime/proc.go#L113-L120.

Fixes new compress/flate test added in golang/go@9c3630f:

	$ gopherjs test --short --run='^TestMaxStackSize$' compress/flate
	--- FAIL: TestMaxStackSize (0.10s)

	/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.240135062:1414
	          throw new Error(msg);
	                ^
	Error: runtime error: native function not implemented: runtime/debug.setMaxStack
	    at $callDeferred (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.240135062:1414:17)
	    at $panic (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.240135062:1453:3)
	    at $b (/testing/testing.go:622:5)
	    at $callDeferred (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.240135062:1426:23)
	    at $panic (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.240135062:1453:3)
	    at $throwRuntimeError (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/runtime.go:31:4)
	    at setMaxStack (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.240135062:25166:3)
	    at Object.SetMaxStack (/runtime/debug/garbage.go:116:3)
	    at TestMaxStackSize (/compress/flate/deflate_test.go:872:3)
	    at tRunner (/testing/testing.go:657:3)
	    at $goroutine (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.240135062:1473:19)
	    at Timeout.$runScheduled [as _onTimeout] (/Users/Dmitri/Dropbox/Work/2013/GoLand/src/github.com/gopherjs/gopherjs/test.240135062:1514:7)
	    at ontimeout (timers.js:365:14)
	    at tryOnTimeout (timers.js:237:5)
	    at Timer.listOnTimeout (timers.js:207:5)
	FAIL    compress/flate  0.748s
…mentation.

Replace it with a not-implemented-erroring one.

This fixes the issue #583 where on darwin a call to os.Getwd is made,
which makes syscalls, and causes a warning to be printed to console:

	warning: system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md

os.Executable is documented to be unsupported on nacl:

	// Executable is not supported on nacl or OpenBSD (unless procfs is
	// mounted.)

GOARCH=js is similar to nacl in many ways, so it's pretty expected
os.Executable wouldn't be supported here either.

Use https://github.com/golang/go/blob/990124da2a6ca5a54b38733b51018e2f8758cfae/src/os/executable_procfs.go#L21
as template for error message.

Fixes #583.
Done with go1.8 (final), latest version of vfsgendev:

	go generate ./...
@dmitshur
Copy link
Member Author

dmitshur commented Feb 16, 2017

I've rebased this on top of latest master and cleaned up the history (got rid of multiple Go beta version update commits, combined all the "regenerate" commits into one, etc.). /cc @neelance

I see there's one failure:

unok	fixedbugs/issue8613.go	0.103s

That means a previously known failure is now passing. It might be because of something that was fixed in master since then.

I'll need to look into that after I get back from the Go 1.8 release party! 🎉

@dmitshur
Copy link
Member Author

dmitshur commented Feb 16, 2017

The unexpected passing test above makes perfect sense. Here it is:

"fixedbugs/issue8613.go":  {desc: "Does not panic upon division by zero when assigned to _, see https://github.com/gopherjs/gopherjs/issues/551."},

And #551 is now resolved (on master).

So that needs to be updated to a "known pass". Edit: Done in 16fddcc.

It now passes, because the underlying issue has been fixed in f347191.

See #551 (which is now resolved).
@lologarithm
Copy link
Contributor

lologarithm commented Feb 17, 2017

+1 - go1.8 support looking good on my projects!

@dmitshur dmitshur changed the title Go 1.8 support. Go 1.8 support (version bump to GopherJS 1.8-1). Feb 17, 2017
@dmitshur dmitshur merged commit b9bcb1d into master Feb 17, 2017
@dmitshur dmitshur deleted the go1.8 branch February 17, 2017 21:35
@dmitshur
Copy link
Member Author

dmitshur commented Feb 17, 2017

GopherJS 1.8-1 is now released and available on master branch.

See blog post about it here: https://medium.com/gopherjs/gopherjs-1-8-1-is-released-b4473712ab95#.a8a6f3ltk.

See tweet here: https://twitter.com/GopherJS/status/832708146443399170.

Thanks everyone! 🎉

@dmitshur dmitshur mentioned this pull request Mar 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants