gx

package module
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2025 License: Apache-2.0 Imports: 0 Imported by: 0

README

GX: a Domain Specific Programming Language for Array-Computing

GX aims at defining a strongly typed programming language to define functions operating on arrays and running on accelerators such as GPUs, TPUs. A key difference with Python and many programming languages is that array dimension are part of the type of an object. Also, GX aims at being easy to integrate with existing programming language such as Go, Python, or C++ by providing utilities to generate bindings.

Disclaimer

This is not an official Google DeepMind product (experimental or otherwise), it is just code that happens to be owned by Google-DeepMind. GX is experimental and work in progress. As of today, we do not consider any part of the language as stable. Breaking changes will happen on a regular basis.

You are welcome to send PR or to report bugs. We will do our best to answer but there is no guarantee that you will get a response.

Documentation

Overview

Package gx is only used to generate C source code.

Directories

Path Synopsis
api
Package api defines the interface between a backend and a GX package.
Package api defines the interface between a backend and a GX package.
options
Package options specifies options for packages.
Package options specifies options for packages.
trace
Package trace is the API to use the builtin `trace` in GX.
Package trace is the API to use the builtin `trace` in GX.
tracer
Package tracer implements a context and evaluator for the interpreter which builds a graph by tracing operators being executed when GX code is interpreted.
Package tracer implements a context and evaluator for the interpreter which builds a graph by tracing operators being executed when GX code is interpreted.
values
Package values implements all values that GX can represent.
Package values implements all values that GX can represent.
base
fmt
Package fmt provides utility methods for building string representations of GX objects.
Package fmt provides utility methods for building string representations of GX objects.
iter
Package iter provides common iterators.
Package iter provides common iterators.
ordered
Package ordered provides ordered data structure.
Package ordered provides ordered data structure.
stringseq
Package stringseq provides functions for converting iterator sequences to strings.
Package stringseq provides functions for converting iterator sequences to strings.
sync
Package sync provides utilities for synchronization.
Package sync provides utilities for synchronization.
tmpl
Package tmpl provides helper functions for Go templates.
Package tmpl provides helper functions for Go templates.
build
builder
Package builder builds a GX intermediate representation (IR).
Package builder builds a GX intermediate representation (IR).
builder/builtins
Package builtins provides builtins for the compiler.
Package builtins provides builtins for the compiler.
builder/irb
Package irb keeps track of IRs being built and how to add them to the package declarations.
Package irb keeps track of IRs being built and how to add them to the package declarations.
builder/testbuild
Package testbuild provides helper functions to test the build step in GX.
Package testbuild provides helper functions to test the build step in GX.
builtins
Package builtins provides helper functions for builtins functions.
Package builtins provides helper functions for builtins functions.
fmterr
Package fmterr provides helpers to accumulate errors while compiling and format errors given a position a fileset.
Package fmterr provides helpers to accumulate errors while compiling and format errors given a position a fileset.
importers
Package importers provide a package loader implementation.
Package importers provide a package loader implementation.
importers/embedpkg
Package embedpkg loads imports and files using the embed Go package.
Package embedpkg loads imports and files using the embed Go package.
importers/localfs
Package localfs builds GX source code from the local filesystem.
Package localfs builds GX source code from the local filesystem.
importers/localfs/binder
Package binder provides strings for GX binder to generate the code to load GX packages from the local filesystem.
Package binder provides strings for GX binder to generate the code to load GX packages from the local filesystem.
ir
Package ir is the GX Intermediate Representation (IR) tree.
Package ir is the GX Intermediate Representation (IR) tree.
ir/generics
Package generics provides functions to handle generics with the GX IR.
Package generics provides functions to handle generics with the GX IR.
ir/irhelper
Package irhelper provides helper functions to build IR programmatically.
Package irhelper provides helper functions to build IR programmatically.
ir/irstring
Package irstring builds a string representation of an IR tree.
Package irstring builds a string representation of an IR tree.
module
Package module provides helper functions to handle GX modules.
Package module provides helper functions to handle GX modules.
cgx
handle
Package handle wrap/unwrap Go pointers for C.
Package handle wrap/unwrap Go pointers for C.
fmt
fmtarray
Package fmtarray formats arrays into string.
Package fmtarray formats arrays into string.
Package golang provides everything required to run GX from Go.
Package golang provides everything required to run GX from Go.
backend
Package backend implements a backend for GX in Go.
Package backend implements a backend for GX in Go.
backend/graph
Package graph implements a computational graph in GX.
Package graph implements a computational graph in GX.
backend/kernels
Package kernels implement Go kernels for GX.
Package kernels implement Go kernels for GX.
backend/platform
Package platform implements a GX platform for the native Go backend.
Package platform implements a GX platform for the native Go backend.
binder
Package binder generates bindings given a GX package.
Package binder generates bindings given a GX package.
binder/bindings
Package bindings provides abstractions shared by all bindings generators.
Package bindings provides abstractions shared by all bindings generators.
binder/ccbindings
Package ccbindings generates C++ bindings for a GX package.
Package ccbindings generates C++ bindings for a GX package.
binder/ccbindings/fmtpath
Package fmtpath formats paths for C++ generated files.
Package fmtpath formats paths for C++ generated files.
binder/cgx
Package cgx provides an interface for calling into GX from C.
Package cgx provides an interface for calling into GX from C.
binder/cgx/embed
Package embed exposes a builder loading GX files from the files embedded in the binary.
Package embed exposes a builder loading GX files from the files embedded in the binary.
binder/cgx/testing
Package testing provide a cgx runtime for GX testing.
Package testing provide a cgx runtime for GX testing.
binder/cgx/testing/async
Package async tests cgx with concurrent calls.
Package async tests cgx with concurrent calls.
binder/genbind
Utility genbind generates bindings for GX packages.
Utility genbind generates bindings for GX packages.
binder/gobindings
Package gobindings generates Go bindings for a GX package.
Package gobindings generates Go bindings for a GX package.
binder/gobindings/types
Package types defines types used in the Go bindings.
Package types defines types used in the Go bindings.
encoding
Package encoding encodes GX structure
Package encoding encodes GX structure
encoding/native
Package native fills a GX from Go maps.
Package native fills a GX from Go maps.
packager
Command packager packages GX files into a Go library.
Command packager packages GX files into a Go library.
packager/pkginfo
Package pkginfo extracts information from a gx package folder.
Package pkginfo extracts information from a gx package folder.
template
Package template runs a template and write the result into a file.
Package template runs a template and write the result into a file.
tests
Package tests includes all the Go bindings tests.
Package tests includes all the Go bindings tests.
tests/basictest
Package basictest tests the Go bindings of the basic GX package.
Package basictest tests the Go bindings of the basic GX package.
tests/cartpoletest
Package cartpoletest tests the Go bindings for cartpole.
Package cartpoletest tests the Go bindings for cartpole.
tests/dtypestest
Package dtypestest tests the Go bindings for all dtypes.
Package dtypestest tests the Go bindings for all dtypes.
tests/importtest
Package importtest tests Go bindings of the import GX package.
Package importtest tests Go bindings of the import GX package.
tests/mathtest
Package mathtest tests constants in the math package.
Package mathtest tests constants in the math package.
tests/parameterstest
Package parameterstest tests the Go bindings of the basic GX package.
Package parameterstest tests the Go bindings of the basic GX package.
tests/pkgvarstest
Package pkgvarstest tests the Go bindings of the basic GX package.
Package pkgvarstest tests the Go bindings of the basic GX package.
tests/randtest
Package randtest tests calling the rand package from GX standard library.
Package randtest tests calling the rand package from GX standard library.
tests/unexportedtest
Package main generates a main function to run all the GX tests of a file.
Package main generates a main function to run all the GX tests of a file.
tools/testsmain
Package main generates a main function to run all the GX tests of a file.
Package main generates a main function to run all the GX tests of a file.
internal
base/scope
Package scope provides types for modeling execution scopes, as well as simple namespaces.
Package scope provides types for modeling execution scopes, as well as simple namespaces.
interp/canonical
Package canonical implements canonical expressions that can be compared to one another.
Package canonical implements canonical expressions that can be compared to one another.
interp/compeval
Package compeval runs GX code at compile time.
Package compeval runs GX code at compile time.
interp/compeval/cpevelements
Package cpevelements provides elements for the interpreter for compeval.
Package cpevelements provides elements for the interpreter for compeval.
interp/flatten
Package flatten provides utilities to flatten/unflatten interpreter elements.
Package flatten provides utilities to flatten/unflatten interpreter elements.
tracer/cfunc
Package cfunc is a function that has been compiled by a backend.
Package cfunc is a function that has been compiled by a backend.
tracer/processor
Package processor stores processing that is required before and after a compiled function is called.
Package processor stores processing that is required before and after a compiled function is called.
Package interp evaluates GX code given an evaluator.
Package interp evaluates GX code given an evaluator.
context
Package context maintains the namespaces and stack for the interpreter.
Package context maintains the namespaces and stack for the interpreter.
elements
Package elements provides generic elements, independent of the evaluator, for the interpreter.
Package elements provides generic elements, independent of the evaluator, for the interpreter.
evaluator
Package evaluator defines interfaces for the interpreter to use to evaluate GX code.
Package evaluator defines interfaces for the interpreter to use to evaluate GX code.
grapheval
Package grapheval implements the evaluation of core GX functions.
Package grapheval implements the evaluation of core GX functions.
materialise
Package materialise defines interfaces and helper functions to transform elements into graph nodes.
Package materialise defines interfaces and helper functions to transform elements into graph nodes.
numbers
Package numbers implement elements representing numbers for the interpreter.
Package numbers implement elements representing numbers for the interpreter.
proxies
Package proxies provides proxy for all GX values.
Package proxies provides proxy for all GX values.
Package stdlib provides the GX standard library that is independent of a backend.
Package stdlib provides the GX standard library that is independent of a backend.
bindings/go
Generate the bindings of the GX standard library for Go.
Generate the bindings of the GX standard library for Go.
bindings/go/control_go_gx
Package control_go_gx are Go bindings to the GX package: control.
Package control_go_gx are Go bindings to the GX package: control.
bindings/go/dtype_go_gx
Package dtype_go_gx are Go bindings to the GX package: dtype.
Package dtype_go_gx are Go bindings to the GX package: dtype.
bindings/go/genstdlib
Package genstdlib provides helpers to build the bindings of the standard library packages.
Package genstdlib provides helpers to build the bindings of the standard library packages.
bindings/go/math/grad_go_gx
Package grad_go_gx are Go bindings to the GX package: math/grad.
Package grad_go_gx are Go bindings to the GX package: math/grad.
bindings/go/math_go_gx
Package math_go_gx are Go bindings to the GX package: math.
Package math_go_gx are Go bindings to the GX package: math.
bindings/go/num_go_gx
Package num_go_gx are Go bindings to the GX package: num.
Package num_go_gx are Go bindings to the GX package: num.
bindings/go/rand_go_gx
Package rand_go_gx are Go bindings to the GX package: rand.
Package rand_go_gx are Go bindings to the GX package: rand.
bindings/go/shapes_go_gx
Package shapes_go_gx are Go bindings to the GX package: shapes.
Package shapes_go_gx are Go bindings to the GX package: shapes.
builtin
Package builtin defines interfaces and helper methods to provide builtin functions.
Package builtin defines interfaces and helper methods to provide builtin functions.
control
Package control provides runtime control flow via the GX `control` standard library.
Package control provides runtime control flow via the GX `control` standard library.
dtype
Package dtype provides the functions in the dtype GX standard library.
Package dtype provides the functions in the dtype GX standard library.
impl
Package impl provides a structure pointing to standard library functions provided by a backend.
Package impl provides a structure pointing to standard library functions provided by a backend.
math
Package math provides math functions in GX.
Package math provides math functions in GX.
math/grad
Package grad implement GX functions to compute the gradient of GX functions.
Package grad implement GX functions to compute the gradient of GX functions.
math/grad/testgrad
Package testgrad provides function to test autograd.
Package testgrad provides function to test autograd.
num
Package num provides the functions in the num GX standard library.
Package num provides the functions in the num GX standard library.
rand
Package rand provides the functions in the rand GX standard library.
Package rand provides the functions in the rand GX standard library.
shapes
Package shapes provides functions to manipulate the shape of tensors.
Package shapes provides functions to manipulate the shape of tensors.
Package tests embed all GX test files.
Package tests embed all GX test files.
bindings
Package bindings provide test files to test bindings.
Package bindings provide test files to test bindings.
bindings/basic
Package basic encapsulates GX source files into a Go package.
Package basic encapsulates GX source files into a Go package.
bindings/basic/basic_go_gx
Package basic_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/basic.
Package basic_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/basic.
bindings/cartpole
Package cartpole encapsulates GX source files into a Go package.
Package cartpole encapsulates GX source files into a Go package.
bindings/cartpole/cartpole_go_gx
Package cartpole_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/cartpole.
Package cartpole_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/cartpole.
bindings/dtypes
Package dtypes encapsulates GX source files into a Go package.
Package dtypes encapsulates GX source files into a Go package.
bindings/dtypes/dtypes_go_gx
Package dtypes_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/dtypes.
Package dtypes_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/dtypes.
bindings/encoding
Package encoding encapsulates GX source files into a Go package.
Package encoding encapsulates GX source files into a Go package.
bindings/encoding/encoding_go_gx
Package encoding_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/encoding.
Package encoding_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/encoding.
bindings/imports
Package imports encapsulates GX source files into a Go package.
Package imports encapsulates GX source files into a Go package.
bindings/imports/imports_go_gx
Package imports_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/imports.
Package imports_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/imports.
bindings/math
Package math encapsulates GX source files into a Go package.
Package math encapsulates GX source files into a Go package.
bindings/math/math_go_gx
Package math_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/math.
Package math_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/math.
bindings/parameters
Package parameters encapsulates GX source files into a Go package.
Package parameters encapsulates GX source files into a Go package.
bindings/parameters/parameters_go_gx
Package parameters_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/parameters.
Package parameters_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/parameters.
bindings/pkgvars
Package pkgvars encapsulates GX source files into a Go package.
Package pkgvars encapsulates GX source files into a Go package.
bindings/pkgvars/pkgvars_go_gx
Package pkgvars_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/pkgvars.
Package pkgvars_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/pkgvars.
bindings/rand
Package rand encapsulates GX source files into a Go package.
Package rand encapsulates GX source files into a Go package.
bindings/rand/rand_go_gx
Package rand_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/rand.
Package rand_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/rand.
bindings/unexported
Package unexported encapsulates GX source files into a Go package.
Package unexported encapsulates GX source files into a Go package.
bindings/unexported/unexported_go_gx
Package unexported_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/unexported.
Package unexported_go_gx are Go bindings to the GX package: github.com/gx-org/gx/tests/bindings/unexported.
testing
Package testing provides functions to run gx tests.
Package testing provides functions to run gx tests.
testing/prime
Package prime generates prime numbers.
Package prime generates prime numbers.
tools
gxfix
Package gxfix fixes GX code.
Package gxfix fixes GX code.
gxfix/fixers
Package fixers implements functions to fix GX code.
Package fixers implements functions to fix GX code.
gxflag
Package gxflag provides flag types for GX tools.
Package gxflag provides flag types for GX tools.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL