This is a guide to the features of Go we currently support for using in your FPGA code – the sections match up to the Go spec so you can refer to that if you need more information on a feature. When new features are included they will be highlighted in our Release Notes.
We do not currently support the use of any non-FPGA specific packages in your FPGA code, which includes standard Go packages. This is because they will include elements of the Go language that we do not support. To see a list of the FPGA-targeted packages we provide, please see Go Packages. We have several customers working on their own open source packages for use with our service. If you fancy the challenge of making one too, we’ll be very happy to promote it to our users.
Take a look at our roadmap and feel free to make suggestions if there’s anything you would like to see us support.
Source code representation¶
|letters and digits||supported|
|operators and delimiters||supported|
|numeric||partial support||Floating-point and imaginary numbers are not supported.
|array||partial support||Large multi-dimensional arrays are not supported yet but we’ll be planning the required work soon.|
|struct||partial support||Channels cannot be placed into structs. Currently we do not support making arrays of structs or placing large arrays (>256 bits) inside structs, but we are currently working to support both.|
|function||partial support||Functions passed as arguments are not currently supported|
|channel||partial support||Channels must be statically declared. They cannot be placed in an array or struct. They cannot be reassigned, and they do not support specifying a capacity with
Properties of types and values¶
Declarations and scope¶
|predeclared identifiers||partial support||All integer types,
|uniqueness of identifiers||unsupported|
|variable declarations||partial support||Multiple return values are not currently supported but we’re working on it so keep an eye on our Release Notes|
|short variable declarations||partial support||Same as above|
|method expressions||supported||Note: Passing methods to functions is not currently supported|
|calls||partial support||Multiple returns are not supported|
|passing arguments to … parameters||unsupported|
|operators||partial support||Operators relating to pointers are not supported.|
|constant expressions||partial support||builtin calls are currently not supported|
|order of evaluation||unsupported|
|length and capacity||unsupported|
|making slices, maps and channels||partial support||All channels have a buffer size of 1|
|appending to and copying slices||unsupported|
|deletion of map elements||unsupported|
|manipulation of complex numbers||unsupported|
|source file organization||supported|
Program initialization and execution¶
|the zero value||supported|
|size and alignment guarantees||unsupported|