V(Vlang)0.3 正式发布,改进泛型


自 0.2 版以来(2020 年 12 月),有 5769 个提交被推送到 master 分支,有 1697 个 bug 被修复。从现在开始,Vlang 将每隔 4 个月做一次重大更新。

V 0.3 部分更新内容如下:

  • 通过 C2V 进行 C 到 V 的转译: v translate file.c(演示视频,YouTube)
  • 在 V、cgen 和 C 互操作中进行了大量的错误修正,以允许运行转译好的 DOOM.v
  • 用 V 编译器构建的程序不再默认泄漏内存
  • Vlang Closures 支持所有的操作系统
  • OptionResult 现在是独立的类型,旧的代码将在未来 1 年内可以继续正常使用
  • 在类型检查器中增加了数百个新的检查
  • 所有 V 的后端都被分割成独立的进程,因此构建 V 的速度提高了 26%。
  • ustring 已被 []rune 所取代
  • Maps 现在可以有非字符串的键
  • C 后端现在是并行的(目前只有 cgen 部分)
  • 大量的编译器源代码的清理和优化。根据 fast.vlang.io 的数据,编译器的速度提高了 ~30%
  • 更好的编译器源代码组织
  • V 的整数类型的命名现在更加一致了: byte 已被改名为 u8,旧的代码将在未来 1 年内可以继续正常使用
  • 错别字检测器现在高亮显示了建议的名称,从而使其更加明显
  • datatypes 模块现在有 Heap, Queue, Stack, BSTree, LinkedList
  • vlib 现在有一个 TOML 解析器,与 TOML 1.0 完全兼容。
  • 在 V.js 后端做了很多工作,包括图形库,它已被移植到 V.js
  • 现在可以通过使用数组中的每个单独元素来进行更复杂的数组初始化 ([]int{init: it})
  • V 中加入了移位运算符 >>>>>>=(它们的工作原理与 Java 中的完全一样)
  • nofloat 选项,这对编写内核和没有 FPU 的嵌入式系统很有用
  • TCC 现在与语言捆绑在一起,这允许在不依赖外部 C 编译器的情况下构建 V 程序
  • Null 可以只在 unsafe 的情况下使用
  • 新模块 compress.gzip
  • 大量的 net/ net.http/ vweb 修正
  • 支持 IPv6
  • Go2V 转译器已经由社区启动,并且已经可以转译简单的程序
  • Go 后端的早期版本( v -b go -o file.go file.v
  • 引入 isizeusize 类型,弃用 size_t,改用 usize
  • 添加 datatypesdatatypes.fsm 模块。
  • 泛型接口
  • 修复泛型中的更多错误

更多详情可查看:https://github.com/vlang/v

 


相關推薦

2023-09-22

解 Go,那么就已经了解 80% 的 V。V 在 Go 的基础上进行改进之处:https://vlang.io/compare#go。 V 主要特性 简单(作者声称可以在不到一小时内学习 V) 快速编译(编译器只有 400kb,而且无第三方依赖) 易于开发:V 在不到一

2023-09-06

V语言 (Vlang) 0.4.1 已发布。主要变化集中在改进语言特性、解析器、标准库,以及编译器内部相关的变化等。 实现Enum.from_string(name string)将字符串转换为枚举值 禁止使用未初始化的函数指针 使用默认 expr 修复匿名结构 支

2022-02-28

Rust 1.59.0 稳定版已正式发布,新版本最值得关注的特性是支持在代码中内联汇编 (Inline assembly),其他变化包括:引入解构式赋值、默认关闭增量编译,以及 Const 泛型参数支持设置默认值等。 内联汇编 (Inline assembly) 此项特

2022-05-30

PhpStorm 2022.2 早期访问计划 (EAP) 正式发布!该版本带来泛型、Rector 支持和一系列质量改进的许多新功能。 Rector 支持 Rector 可批量进行 PHP 自动升级和代码重构,现在在 PhpStorm 中为它提供内置支持。 使用 PhpStorm 的 Rector 支

2022-09-15

hash 库 path 库 文件系统操作(fs) 系统操作(os) 本次发布的版本,直接从 v2.0.3 跳到了 v3.0.0,跨度非常之大,它在性能、易用性、稳定性等方面均有全面的提升。 性能优化 内存分配器 v3.0 中实现了一个新的内存分配器(co/

2022-11-22

http-little-toy 更新日志 新增记录请求响应作为日志 新增支持命令行设置 Http header 一个简单的 http 并发测试工具。 仓库地址 如果喜欢就 star⭐️一下吧,让它沉睡在你的收藏库里。 github.com/leihenshang/http-little... gitee.com/leihens

2022-11-12

庆祝 Go 开源 13 周年。2009 年 11 月 10 日,Go 作为开源项目正式宣布推出,目前已开源 13 周年。   对于 Go 来说,2022 是非常重要的一年,这一年  Go 发布了 Go 1.18 和 Go 1.19 版本,下面回顾一下今年 Go 发布的新

2022-08-27

TypeScript 4.8 已正式发布。 自 Beta 和 RC 发布以来的变化 自 Beta 测试版发布以来,稳定版现已支持从自动导入中排除特定文件。测试版的公告没有提到围绕类型签名中未使用的解构别名 (destructuring aliases) 的破坏性变化。此外

2023-10-20

【源创会预告】1024 程序员节(的前两天),相约开源PHP办公室,我们一起聊 AI!>>> 主要更新 本版本为修正版本,主要完善了PSR规范的兼容性 改进remember方法的有效期兼容性 为requre获取参数方法指定正确的filter类

2023-11-25

这个发布版本主要集中在稳定性改进方面: 改进持续集成(CI)流程并为每个拉取请求(PR)实施端到端(E2E)测试。 引入追踪和性能分析,并收集更多的指标数据。 提升s3stream的性能。 修复一些bug。 关于我们 AutoMQ

2022-09-13

现 泛型已被迅速采用。大多数受访者都知道 Go 1.18 已正式支持泛型,大约四分之一的受访者表示他们已经开始在 Go 代码中使用泛型。不过开发者也已经遇到了初始泛型实现的一些限制。 Fuzzing(模糊测试)对大多数 Go 开发

2024-08-15

Go 编程语言开发团队今天凌晨正式发布 Go 1.23。 此版本带来了众多改进和新特性,下面简单看看主要亮点。 一. 语言特性更新 新的迭代器语法: 在"for-range"循环中,现在可以使用迭代器函数作为range表达式,如func(func(K) bool)

2022-08-03

确定义了 sync/atomic 包的行为。happens-before 关系的正式定义已被修改,以与 C、C++、Java、JavaScript、Rust 和 Swift 使用的内存模型保持一致。现有程序不受影响。随着内存模型的更新, sync/atomic 包中还有新的类型,例如&nb

2022-11-14

dubbogo 社区近期发布了 https://github.com/apache/dubbo-go/releases/tag/v3.0.3-rc2。相关改进内容较多,本文只列出相关重大 feature、bugfix 、 性能提升项。 1. Proxyless 模式下证书文件获取 在 Proxy 模式下,Istio 颁发的证书可以通过 sidecar