Go+ v1.1.0 发布,为数据科学而生的编程语言
时间:2022-06-08 10:29 来源:linux.it.net.cn 作者:IT
Go+ v1.1.0 已发布,这是一门适用于工程、STEM 教育和数据科学的编程语言。主要特性包括:
-
静态类型语言。
-
与 Go 完全兼容。
-
脚本化的风格,以及比 Go 更易于阅读的数据科学代码。
-
支持字节码后端和 Go 代码生成。在字节码模式下,Go+ 不支持 cgo
。然而,在 Go 代码生成模式下,Go+ 完全支持 cgo
。
新版本亮点
1. 引入 https://github.com/goplus/mod 模块。此模块提供对 Go/Go+ module 相关功能的支持。可以看作是对 golang.org/x/mod 的增强,其中包括:
-
github.com/goplus/mod:提供查找 go.mod/gop.mod 文件的能力。
-
github.com/goplus/mod/modfile:为 gop.mod 文件提供读写支持。
-
github.com/goplus/mod/{modload, gopmod}:提供 Go+ Module 类。
-
github.com/goplus/mod/modcache:提供对模块缓存目录的支持。
-
github.com/goplus/mod/modfetch:提供模块下载功能。
2. 改进 gop mod
(模块管理)相关命令,尤其是 gop mod tidy
很多情况下需要考虑的命令。
3. 增强 gop
等命令功能的完整性,例如 gop build/install/run/test
,主要体现在:
-
支持远程包。例如,在 Go+ v1.0 中
gop run
只能操作本地目录或文件,现在 gop run
支持运行远程包。
-
保证
gop build/install/run/test
一致性。以前,gop run
和 gop build/install
的代码是分开编写的,缺乏统一的支持框架,最终行为会有所不同。现在它们被统一到同一个实现框架中。
-
修复 gop 缓存错误,在 Go+ v1.0 中,由于 import 包的实现性能较差,引入了 gop cache 模块缓存,导致模块更新检测出现一些 bug,以及导入一些复杂包的死循环。
4. 增加 v1.0 缺少的语法特性。主要包括:
-
支持重载
++
,--
运算符
-
表达式
type()
支持用于表示类型 type
的零值。例如,string()
等价于 ""
,int32()
等价于 int32(0)
,等等。
-
支持
uint128
,int128
类型。
-
支持
any
类型,相当于空接口。
5. 支持混写 Go/Go+ 代码
详情参考 gop/testdata/mixgo 示例。
6. 支持从 Go+ 调用 C,包括:
-
gop c
命令(相当于独立 c2go
命令)可用于将 C 项目转换为 Go 项目。
-
import "C"
import "C/xxx"
用于导入 c2go 转换的 C 工程。import "C"
是 import "C/github.com/goplus/libc"
的缩写。
-
C"xxx"
语法表示 C 风格的字符串常量。
以下代码是 Go+ 与 C 交互的示例。
import "C"
C.printf C"Hello, c2go!\n"
C.fprintf C.stderr, C"Hi, %7.1f\n", 3.14
目前 Go+ 对 C 的支持只是一个预览版,还没有达到可用于工程项目的程度。据介绍,就 libc 而言,目前的迁移进度只有 5% 左右,而这仅仅是个开始。在即将到来的 Go+ v1.2 版本规划中,对 C 的完全支持被列为重中之重。当然,对 cgo 和 Go Module 的支持也在规划中,这是混写 Go/Go+ 代码的关键能力增强。
详情查看 release note。
(责任编辑:IT)
Go+ v1.1.0 已发布,这是一门适用于工程、STEM 教育和数据科学的编程语言。主要特性包括:
新版本亮点 1. 引入 https://github.com/goplus/mod 模块。此模块提供对 Go/Go+ module 相关功能的支持。可以看作是对 golang.org/x/mod 的增强,其中包括:
2. 改进
3. 增强
4. 增加 v1.0 缺少的语法特性。主要包括:
5. 支持混写 Go/Go+ 代码
详情参考 gop/testdata/mixgo 示例。 6. 支持从 Go+ 调用 C,包括:
以下代码是 Go+ 与 C 交互的示例。
目前 Go+ 对 C 的支持只是一个预览版,还没有达到可用于工程项目的程度。据介绍,就 libc 而言,目前的迁移进度只有 5% 左右,而这仅仅是个开始。在即将到来的 Go+ v1.2 版本规划中,对 C 的完全支持被列为重中之重。当然,对 cgo 和 Go Module 的支持也在规划中,这是混写 Go/Go+ 代码的关键能力增强。 详情查看 release note。 (责任编辑:IT) |