Fast Web Animation Library for Go


Govfx is a library that brings you closer to an ideal world where your web animations can also be written in Go, powered by the beloved GopherJS library. It allows you to build custom yet fast animation sequences while taking care of the nittygritty details for you, whilst still optimizing as possible to ensure the best performance. It also provides support for animating elements within the Shadow DOM.

Would love to hear opinions on improvement and possible features that this can provided for anyone interested in writing their front-end animation code in Go.

Thanks :slight_smile:

P.S: The library is still undergoing development but its already at a perfectly usable state, and contributors are awesomely welcomed to join. :wink:


I’d like to try it, but how to compile?

cd examples/shadowDom && gopherjs build app.go

fails with

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0xa0 pc=0x6996c4]

goroutine 1 [running]:
panic(0x9fd720, 0xc82000e190)
        /usr/local/go/src/runtime/panic.go:464 +0x3e6
go/types.(*Checker).handleBailout(0xc8200de0e0, 0xc820239de0)
        /usr/local/go/src/go/types/check.go:213 +0xd8
panic(0x9fd720, 0xc82000e190)
        /usr/local/go/src/runtime/panic.go:426 +0x4e9
go/types.(*Checker).handleBailout(0xc820382c40, 0xc820237918)
        /usr/local/go/src/go/types/check.go:213 +0xd8
panic(0x9fd720, 0xc82000e190)
        /usr/local/go/src/runtime/panic.go:426 +0x4e9, 0xc820143350, 0xc82042be21, 0x18, 0xa32c20, 0x0, 0x0)
        /home/gthomas/src/ +0x124*packageImporter).Import(0xc820143370, 0xc82042be21, 0x18, 0xc8202375a0, 0x0, 0x0)
        <autogenerated>:22 +0xb8
        /usr/local/go/src/go/types/resolver.go:196 +0x3354
go/types.(*Checker).Files(0xc820382c40, 0xc820322f60, 0x3, 0x4, 0x0, 0x0)
        /usr/local/go/src/go/types/check.go:223 +0xb3
go/types.(*Config).Check(0xc820348100, 0xc8200e0c31, 0x22, 0xc8201b1480, 0xc820322f60, 0x3, 0x4, 0xc82014c1e0, 0x41d567, 0x0, ...)
        /usr/local/go/src/go/types/api.go:344 +0x1f7, 0x22, 0xc820322f60, 0x3, 0x4, 0xc8201b1480, 0xc820143340, 0x0, 0x3, 0x0, ...)
        /home/gthomas/src/ +0x54c*Session).BuildPackage(0xc8200d3960, 0xc820275540, 0x0, 0x0)
        /home/gthomas/src/ +0x10f6*Session).buildImportPathWithSrcDir(0xc8200d3960, 0xc8200e0c31, 0x22, 0xc820011b40, 0x35, 0x0, 0x0, 0x0)
        /home/gthomas/src/ +0x219*Session).BuildPackage.func1(0xc8200e0c31, 0x22, 0xc8200e0c31, 0x0, 0x0)
        /home/gthomas/src/ +0x5a, 0xc820120190, 0xc8200e0c31, 0x22, 0xa32c20, 0x0, 0x0)
        /home/gthomas/src/ +0xa2*packageImporter).Import(0xc8201201b0, 0xc8200e0c31, 0x22, 0xc820239a68, 0x0, 0x0)
        <autogenerated>:22 +0xb8
        /usr/local/go/src/go/types/resolver.go:196 +0x3354
go/types.(*Checker).Files(0xc8200de0e0, 0xc82002e118, 0x1, 0x1, 0x0, 0x0)
        /usr/local/go/src/go/types/check.go:223 +0xb3
go/types.(*Config).Check(0xc82011c500, 0xababa0, 0x4, 0xc820011cc0, 0xc82002e118, 0x1, 0x1, 0xc820118370, 0x0, 0x0, ...)
        /usr/local/go/src/go/types/api.go:344 +0x1f7, 0x4, 0xc82002e118, 0x1, 0x1, 0xc820011cc0, 0xc820120180, 0x0, 0x902ec0, 0x0, ...)
        /home/gthomas/src/ +0x54c*Session).BuildPackage(0xc8200d3960, 0xc820015e00, 0x0, 0x0)
        /home/gthomas/src/ +0x10f6*Session).BuildFiles(0xc8200d3960, 0xc82000fae0, 0x1, 0x1, 0xc82000faf0, 0x6, 0xc820011b40, 0x35, 0x0, 0x0)
        /home/gthomas/src/ +0x2cb
main.main.func1.1(0x0, 0x0)
        /home/gthomas/src/ +0xb7e
main.handleError(0xc82023bae8, 0xc820011bc0, 0x0, 0x0)
        /home/gthomas/src/ +0x3f
main.main.func1(0xc82008c400, 0xc82000fae0, 0x1, 0x1)
        /home/gthomas/src/ +0x108*Command).execute(0xc82008c400, 0xc82000fa90, 0x1, 0x1, 0x0, 0x0)
        /home/gthomas/src/ +0x85a*Command).ExecuteC(0xc82008d200, 0xc82008c400, 0x0, 0x0)
        /home/gthomas/src/ +0x55c*Command).Execute(0xc82008d200, 0x0, 0x0)
        /home/gthomas/src/ +0x2d
        /home/gthomas/src/ +0x161f

Can you help me?

Morning @Tamas_Gulacsi,

Sorry for the late reply.

Sure, let me take a look it might actually be due to the move of gopher ha master branch to Go 1.6. Will report back as soon as possible. Would also be awesome if you could open this as an issue.


Also a version of your gopherjs will be helpful, do you have GO15VENDOREXPERIMENT=1 on ?. The code actually came with its own vendor folder to avoid such a situation.

But will definitely get it up to speed with Go1.6 Gopherjs build today

@Tamas_Gulacsi I was unable to reproduce the same error with the latest gopherjs master branch, why not remove the current gopherjs and its sub packages in your $GOSRC directory and follow the installation routine again.

   go get -u

These way, we can read ourselves of the possibilities of any old packages causing issues. :smile:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.