Go+ v1.1.0 发布,为数据科学而生的编程语言


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 rungop 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.1fn", 3.14

目前 Go+ 对 C 的支持只是一个预览版,还没有达到可用于工程项目的程度。据介绍,就 libc 而言,目前的迁移进度只有 5% 左右,而这仅仅是个开始。在即将到来的 Go+ v1.2 版本规划中,对 C 的完全支持被列为重中之重。当然,对 cgo 和 Go Module 的支持也在规划中,这是混写 Go/Go+ 代码的关键能力增强。

详情查看 release note。


相關推薦

2022-05-17

FreeBSD 13.1 已发布,该版本提供了性能上的改进,以及更好的 RISC-V 支持。下面是一些较为重要的更改项: 用户态应用程序更改 对于 64 位架构,基础系统默认启用了与位置无关的可执行文件 (PIE) 支持。 新的 zfskeys rc(8) 服务

2022-09-16

## 更新日志 [v0.0.6] 2022.09.15 升级pf4j插件框架 独立出来模板工程 修复插件重复安装卸载导致有些mapper查询失败的问题 修复一些bug - 开发文档:http://doc.xjd2020.com - 在线体验:https://www.xjd2020.com ## 源码下载 https://gitee.com

2023-04-14

浏览器内编译、执行全链路的自研静态类型的编译型通用编程语言。为 WebAssembly 而生的通用编程语言。 更新内容 增加凹语言中文语法 初步支持接口方法调用 包支持混入汇编代码 删除 testing 实验性的包, 单元测试增加

2022-09-01

管理功能进行统一维护。 通知公告:系统通知公告信息发布维护。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 登录日志:系统登录日志记录查询包含登录异常。 代码生成:一键生成模块 CR

2023-09-19

Docusaurus v3 发布了首个 Beta 测试版。公告称 v3 主要是升级了基础设施,UI 没有重大变化。 Docusaurus 是 Facebook(现更名为 Meta)开源的静态网站生成器。它将你的网站构建成一个单页面应用程序 (single-page application),具有快速

2024-02-02

在首届 PolarDB 开发者大会上,PolarDB“三层分离”新版本发布,可节省 50%数据库成本、基于智能决策实现查询性能 10 倍提升。 近年来,国产数据库广受市场青睐,PolarDB 3 年增速超 400%,服务于自然人税收管理系统、全国 60%

2023-02-08

contribution #472;   完整更新日志具体见 Release 发布版本。   APIJSON 九阴真经 - 软件开发行业的 ATM 机 接口全万能,前端不求人。要啥就有啥,所求即所得。 需求由它变,后端稳如山。不变应万变,上午就上线。

2023-11-24

措施,更是一种安全保障的完整体系,保护企业级客户的数据和应用安全。 在云计算环境下,云主机承载着关键数据和核心业务系统,一旦遭受攻击,最重要的部分可能会被盗取或破坏。而传统的杀毒模式资源占用过多,影响

2023-03-31

CircleCI 创始人 Paul Biggar 是 Darklang 编程语言的作者,近日他在一篇博客中宣布 Darklang 团队将全力投入 AI/GPT,Darklang 将被重构成一整套由 AI 驱动的基础设施,大部分代码都由 AI 生成。 Darklang 是一门 “deployless” 部署的编程语

2023-08-30

模型与底层技术 >>> Notary 项目维护人员宣布了一项重大发布,包括 Notary 项目规范 v1.0.0、notation v1.0.0、notation-go v1.0.0 和notation-core-go v1.0.0,已经可以用于生产环境! Notation 是 Notary 项目的一个子项目,包括 notation CLI 和两

2023-08-12

AJ-Report V1.1.0 已经发布,可视化拖拽编辑图表工具。 新增/优化 1、引入datav依赖,新增样式组件,装饰边框+装饰图 贡献人:wenqindong@wenqindong 2、大屏图表-文本组件增加对多行的支持 贡献人:StefanZhu@stefanZhu 3、Excel报表支

2022-04-02

龙芯的 LoongArch 移植已经被合并了,其将在大约一个月后发布稳定版。据称,由于新的 CPU 移植不会对现有的编译器代码造成风险,所以 LoongArch 代码能够在 GCC 指导委员会的批准后顺利进入 GCC。  是龙芯打造的自主指令系统

2022-09-01

墨干编辑器 v1.1.0 已经发布,基于 GNU TeXmacs 的结构化编辑器 此版本更新内容包括: ==> Bibibili: 墨干V1.1.0发布会 经过三个月的打磨,墨干V1.1.0发布了,这是墨干第二个里程碑式的发布: 从墨干V1.1.0起,所有tm格式中的中文

2022-04-02

础上再延长两年,至 2025 年。 Qt 5.15 LTS 于 2020 年 5 月发布,按照 Qt 的原计划以及以往的传统(即常规的 Qt 版本在标准支持下的支持期为一年,LTS 版本在标准支持下则是三年时间),Qt 5.15 LTS 的支持结束时间为 2023 年 5 月,