{"id":19769387,"url":"https://github.com/goplus/igop","last_synced_at":"2025-04-04T18:10:14.848Z","repository":{"id":37185671,"uuid":"385296507","full_name":"goplus/igop","owner":"goplus","description":"The Go/Go+ Interpreter","archived":false,"fork":false,"pushed_at":"2025-03-27T11:17:27.000Z","size":5856,"stargazers_count":118,"open_issues_count":8,"forks_count":15,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-28T17:11:37.798Z","etag":null,"topics":["data-science","golang","gop","goplus","igop","interpreter","low-code","programming-language","scientific-computing","stem","stem-education"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goplus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-12T15:34:40.000Z","updated_at":"2025-03-28T14:54:28.000Z","dependencies_parsed_at":"2022-07-14T04:10:29.154Z","dependency_job_id":"4a57605a-1c71-4142-a987-12908c4d020b","html_url":"https://github.com/goplus/igop","commit_stats":{"total_commits":1197,"total_committers":7,"mean_commits":171.0,"dds":"0.010025062656641603","last_synced_commit":"08ffed2c1ca06c7fe21984b0b7bac4a8c20a7f1f"},"previous_names":["goplus/interp","goplus/gossa"],"tags_count":129,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goplus%2Figop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goplus%2Figop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goplus%2Figop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goplus%2Figop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goplus","download_url":"https://codeload.github.com/goplus/igop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247226215,"owners_count":20904465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-science","golang","gop","goplus","igop","interpreter","low-code","programming-language","scientific-computing","stem","stem-education"],"created_at":"2024-11-12T04:42:52.778Z","updated_at":"2025-04-04T18:10:14.842Z","avatar_url":"https://github.com/goplus.png","language":"Go","readme":"# iGo+ The Go/Go+ Interpreter\n\n[![Go1.18](https://github.com/goplus/igop/workflows/Go1.18/badge.svg)](https://github.com/goplus/igop/actions/workflows/go118.yml)\n[![Go1.19](https://github.com/goplus/igop/workflows/Go1.19/badge.svg)](https://github.com/goplus/igop/actions/workflows/go119.yml)\n[![Go1.20](https://github.com/goplus/igop/workflows/Go1.20/badge.svg)](https://github.com/goplus/igop/actions/workflows/go120.yml)\n[![Go1.21](https://github.com/goplus/igop/workflows/Go1.21/badge.svg)](https://github.com/goplus/igop/actions/workflows/go121.yml)\n[![Go1.22](https://github.com/goplus/igop/workflows/Go1.22/badge.svg)](https://github.com/goplus/igop/actions/workflows/go122.yml)\n[![Go1.23](https://github.com/goplus/igop/workflows/Go1.23/badge.svg)](https://github.com/goplus/igop/actions/workflows/go123.yml)\n[![Go Reference](https://pkg.go.dev/badge/github.com/goplus/igop.svg)](https://pkg.go.dev/github.com/goplus/igop)\n\n\n### Go Version\n\n- Go1.18 ~ Go1.23\n- macOS Linux Windows  WebAssembly GopherJS and more.\n\n### ABI\n\nsupport ABI0 and ABIInternal\n\n- ABI0 stack-based ABI\n- ABIInternal [register-based Go calling convention proposal](https://golang.org/design/40724-register-calling)\n\n    - Go1.17: amd64\n    - Go1.18: amd64 arm64 ppc64/ppc64le\n    - Go1.19: amd64 arm64 ppc64/ppc64le riscv64\n    - Go1.20: amd64 arm64 ppc64/ppc64le riscv64\n    - Go1.21: amd64 arm64 ppc64/ppc64le riscv64\n    - Go1.22: amd64 arm64 ppc64/ppc64le riscv64\n    - Go1.23: amd64 arm64 ppc64/ppc64le riscv64\n\n### Generics\n\n- support generics (Go1.18 ~ Go1.23)\n- support [Go1.20 nested type-parameterized declarations](https://github.com/golang/go/blob/master/test/typeparam/nested.go) on Go1.18/Go1.19 (Experimental)\n\n### runtime.GC\n\n`igop.Mode ExperimentalSupportGC`\n\nexperimental support runtime.GC and runtime.SetFinalizer\n\n### install igop command line\n\nGo version \u003c= 1.22:\n\n```shell\ngo install github.com/goplus/igop/cmd/igop@latest\n```\n\nGo version == 1.23\n```\ngo install -ldflags=\"-checklinkname=0\" github.com/goplus/igop/igop@v0.23.6\n```\n\n### igop command\n\n```\nigop             # igop repl mode\nigop run         # run a Go/Go+ package\nigop build       # compile a Go/Go+ package\nigop test        # test a package\nigop verson      # print version\nigop export      # export Go package to igop builtin package\n```\n\n### igop run mode\n```\nUsage: igop run [build flags] [package] [arguments...]\n  -exp-gc\n    \texperimental support runtime.GC\n  -mod value\n    \tmodule download mode to use: readonly, vendor, or mod.\n  -ssa\n    \tprint SSA instruction code\n  -ssa-trace\n    \ttrace SSA interpreter code\n  -tags value\n    \ta comma-separated list of build tags to consider satisfied during the build\n  -v\tprint the names of packages as they are compiled.\n  -x\tprint the commands.\n```\n\n### igop repl mode\n\n```shell\nigop                       # run repl mode, support Go/Go+\nigop repl                  # run repl mode, support Go/Go+\nigop repl -go              # run repl mode, disable Go+ syntax\n```\n\n### igop test unsupport features\n\n- test -fuzz\n- test -cover\n\n### igop demo\n\n#### go js playground (gopherjs)\n\n- \u003chttps://jsplay.goplus.org/\u003e\n- \u003chttps://github.com/goplusjs/play\u003e\n\n#### go repl playground (gopherjs/wasm)\n\n- \u003chttps://repl.goplus.org/\u003e\n- \u003chttps://github.com/goplusjs/repl\u003e\n\n#### ispx\n\n\u003chttps://github.com/goplus/ispx\u003e\n\n#### run simple Go source demo\n\n```go\npackage main\n\nimport (\n\t\"github.com/goplus/igop\"\n\t_ \"github.com/goplus/igop/pkg/fmt\"\n)\n\nvar source = `\npackage main\nimport \"fmt\"\ntype T struct {}\nfunc (t T) String() string {\n\treturn \"Hello, World\"\n}\nfunc main() {\n\tfmt.Println(\u0026T{})\n}\n`\n\nfunc main() {\n\t_, err := igop.RunFile(\"main.go\", source, nil, 0)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n```\n\n#### run simple Go+ source demo\n\n```go\npackage main\n\nimport (\n\t\"github.com/goplus/igop\"\n\t_ \"github.com/goplus/igop/gopbuild\"\n)\n\nvar gopSrc string = `\nfields := [\n\t\"engineering\",\n\t\"STEM education\", \n\t\"and data science\",\n]\n\nprintln \"The Go+ language for\", fields.join(\", \")\n`\n\nfunc main() {\n\t_, err := igop.RunFile(\"main.gop\", gopSrc, nil, 0)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n```\n\n#### igop more demo\n\n\u003chttps://github.com/visualfc/igop_demo\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoplus%2Figop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoplus%2Figop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoplus%2Figop/lists"}