github.com/goplus/gossa@v0.3.25/README.md (about)

     1  # gossa - Golang SSA interpreter
     2  
     3  [![Go1.14](https://github.com/goplus/gossa/workflows/Go1.14/badge.svg)](https://github.com/goplus/gossa/actions/workflows/go114.yml)
     4  [![Go1.15](https://github.com/goplus/gossa/workflows/Go1.15/badge.svg)](https://github.com/goplus/gossa/actions/workflows/go115.yml)
     5  [![Go1.16](https://github.com/goplus/gossa/workflows/Go1.16/badge.svg)](https://github.com/goplus/gossa/actions/workflows/go116.yml)
     6  [![Go1.17](https://github.com/goplus/gossa/workflows/Go1.17/badge.svg)](https://github.com/goplus/gossa/actions/workflows/go117.yml)
     7  [![Go1.18](https://github.com/goplus/gossa/workflows/Go1.18/badge.svg)](https://github.com/goplus/gossa/actions/workflows/go118.yml)
     8  
     9  ### ABI
    10  
    11  support ABI0 and ABIInternal
    12  
    13  - ABI0 stack-based ABI
    14  - ABIInternal [register-based Go calling convention proposal](https://golang.org/design/40724-register-calling)
    15  
    16  	- Go1.17: amd64
    17  	- Go1.18: amd64 arm64 ppc64/ppc64le
    18  
    19  ### unsupport features
    20  
    21  - Go1.18 type parameters
    22  - Go1.18 fuzzing
    23  
    24  ### gossa command line
    25  ```
    26  go get -u github.com/goplus/gossa/cmd/gossa
    27  ```
    28  
    29  Commands
    30  ```
    31  gossa run         # interpret package
    32  gossa test        # test package
    33  ```
    34  
    35  ### gossa repl mode
    36  ```
    37  gossa                       # run repl mode, support Go/Go+
    38  gossa repl                  # run repl mode, support Go/Go+
    39  gossa repl -gop=false       # run repl mode, disable Go+ syntax
    40  ```
    41  
    42  ### gossa package
    43  
    44  **run go source**
    45  ```
    46  package main
    47  
    48  import (
    49  	"github.com/goplus/gossa"
    50  	_ "github.com/goplus/gossa/pkg/fmt"
    51  )
    52  
    53  var source = `
    54  package main
    55  
    56  import "fmt"
    57  
    58  func main() {
    59  	fmt.Println("hello")
    60  }
    61  `
    62  
    63  func main() {
    64  	_, err := gossa.RunFile("main.go", source, nil, 0)
    65  	if err != nil {
    66  		panic(err)
    67  	}
    68  }
    69  
    70  ```
    71  
    72  **run gop source**
    73  ```
    74  package main
    75  
    76  import (
    77  	"github.com/goplus/gossa"
    78  	_ "github.com/goplus/gossa/gopbuild"
    79  	_ "github.com/goplus/gossa/pkg/fmt"
    80  )
    81  
    82  var source = `
    83  println "Hello, Go+"
    84  `
    85  
    86  func main() {
    87  	_, err := gossa.RunFile("main.gop", source, nil, 0)
    88  	if err != nil {
    89  		panic(err)
    90  	}
    91  }
    92  ```