V (Vlang) 首個主要版本 0.2 發布,安全快速可編譯的靜態語言

2020-12-24 開源中國

V (Vlang) 0.2 發布了,作者宣布這是首個主要版本,更新重點是提升穩定性和優化編譯時(compile-time)內存管理。

部分更新亮點

  • 通過啟用-autofree參數對 compile-time 內存進行管理(計劃在 0.3 中默認啟用)
  • 提供對 iOS 和 Android 的早期支持
  • 引入 IO 流
  • 引入 channel 和 lock
  • 引入內聯結構體 (Struct embedding)
  • 支持通過 GitHub Actions 自動構建和部署 Linux/Windows/macOS 的 V 二進位文件
  • 支持 C++ 編譯器:C 後端生成的代碼現在可以由 C++ 編譯器編譯
  • 泛型語法更簡潔,例如使用foo(5)代替foo<int>(5)
  • V 現在可通過 WASM 在瀏覽器中運行
  • 完善文檔
  • ……

詳情查看 https://github.com/vlang/v/discussions/7474
V 0.3 Roadmap:https://github.com/vlang/v/blob/master/0.3_roadmap.txt

V 是一個集合了 Go 的簡單和 Rust 的安全特性的靜態語言,作者表示 V 與 Go 非常相似,如果你了解 Go,那麼就已經了解 80% 的 V。V 在 Go 的基礎上進行改進之處:https://vlang.io/compare#go。

V 主要特性

  • 簡單(作者聲稱可以在不到一小時內學習 V)
  • 快速編譯(編譯器只有 400kb,而且無第三方依賴)
  • 易於開發:V 在不到一秒鐘的時間內完成編譯
  • 安全:沒有 null、沒有全局變量、沒有未定義的值、邊界檢測、默認使用 Immutable 結構體
  • 支持 C/C++ 轉換
  • 方便使用的交叉編譯
  • 提供跨平臺 UI 庫
  • 內置圖形庫
  • 內置 ORM
  • 內置 Web 框架
  • ……

示例代碼

資料庫訪問:

struct User { /* ... */ }struct Post { /* ... */ }struct DB { /* ... */ }struct Repo <T> { db DB}fn new_repo<T>(db DB) Repo { return Repo<T>{db: db}}fn (r Repo) find_by_id(id int) T? { // `?` means the function returns an optional table_name := T.name // in this example getting the name of the type gives us the table name return r.db.query_one<T>('select * from $table_name where id = ?', id)}fn main() { db := new_db() users_repo := new_repo<User>(db) posts_repo := new_repo<Post>(db) user := users_repo.find_by_id(1) or { eprintln('User not found') return } post := posts_repo.find_by_id(1) or { eprintln('Post not found') return }}

網絡開發:

struct Story { title string}// Fetches top HN stories in 8 coroutines fn main() { resp := http.get('https://hacker-news.firebaseio.com/v0/topstories.json')? ids := json.decode([]int, resp.body)? mut cursor := 0 for _ in 0..8 { go fn() { for { lock { // Without this lock the program will not compile if cursor >= ids.len { break } id := ids[cursor] cursor++ } resp := http.get('https://hacker-news.firebaseio.com/v0/item/$id.json')? story := json.decode(Story, resp.body)? println(story.title) } }() } runtime.wait() // Waits for all coroutines to finish }

相關焦點

  • 獨家 | pyecharts V1.0.0 版本正式發布
    pyecharts 經過了半年的沉寂後,終於發布了新版本啦!新版本號將從 v1.0.0 開始,這是一個全新的,向下不兼容的 pyecharts 版本。不過如果開發者以前接觸過 pyecharts 的話,新版本對於你們來說也是會很容易上手的。新版本修復 N 個 0.5.x 版本留下來的 bug。
  • GoPlus 0.6.40 發布,支持線上運行模式
    GoPlus(Go+)發布了 v0.6.40 版本。 GoPlus 是一門靜態類型語言,與 Go 語言完全兼容。
  • Lunar Markdown Editor v0.0.6.67 發布
    Lunar Markdown Editor v0.0.6.67 已經發布,此版本更新內容包括:通常情況下,工作區「Images~」文件夾下以「_」開頭的圖像文件會被自動複製到每個工作區
  • Swoole v4.6.0 版本發布,支持原生 curl 協程客戶端
    Swoole v4.6.0 版本發布了,同樣也是 2021 年的首個版本更新。作為一個 y 版本發布,此次更新也包含了不兼容的修改以及許多的新功能,下面就來看一看都有哪些改動?向下不兼容改動從 v4.6.0 版本開始將不再支持 PHP7.1PHP 官方對於 PHP7.1 的支持也早已在 2019 年底結束。
  • MIT正式發布程式語言Julia 1.0:Python、R、C++三合一
    在過去一年中,研究者利用 Julia 在一臺超級計算機上分析天文圖像,速度提升了 1000 倍,在 15 分鐘內將接近 2 億個天體進行分類。從技術上來看,這種語言還會長期發展下去。然而,現在是一個裡程碑的時刻:在本周於倫敦舉辦的 Julia 語言年會上,Julia 1.0 正式發布!一起發布的還有 JuliaCon。
  • Zig 0.7.1 發布,想要替換 C 的程式語言
    Zig 0.7.1 已發布,這是一個 bugfix 版本,共計修復了 69 個 bug。
  • Android Studio 3.0 Canary 版本發布
    Google I/O 舉辦之際,Android Studio 3.0 迎來 Canary 版本的發布。AS 發燒友們可以前往官方下載更新啦,提前感受新功能的使用。在此之前,不妨簡單看看都有哪些實用的更新吧。Kotlin 程式語言:AS 3.0 內部支持 Kotlin 語言,開發人員不用再藉助 Gradle 插件手動配置。
  • Node.js 4.0.0 正式發布了
  • 鴻蒙 OS 2.0 開源了!
    最重要的是,鴻蒙OS 2.0面向應用開發者發布Beta版本,9月10日面向大屏、手錶、車機發布,2020年12月,面向手機發布。餘承東說,明年華為手機將全面支持鴻蒙OS 2.0。餘承東稱,鴻蒙OS是首個真正為全場景時代打造的分布式作業系統。去年推出的鴻蒙OS 1.0版本,驗證了終端分布式技術的可行性,這一技術也被應用到EMUI中,創新出多屏協同、暢連視頻通話、華為HiCar等跨終端體驗。鴻蒙 2.0則在分布式軟總線、分布式數據管理和分布式安全三大核心能力方面進行了全面的升級。
  • PaddlePaddle 2.0.0 Beta 發布,API 體系升級,命令式編程完善
    PaddlePaddle 2.0.0 Beta 已經發布,這是飛槳框架v2.0的測試版,最重要的變化為API體系的全面升級以及命令式編程
  • eoLinker 開源 API 網關 GoKu-API-Gateway V2.0.0 發布
    GoKu API Gateway,中文名:悟空API網關,是eoLinker旗下、國內首個開源go語言API網關,幫助企業進行API服務治理與API性能安全維護,為企業數位化賦能。一、簡介GoKu支持OpenAPI與微服務管理,支持私有雲部署,實現API轉發、請求參數轉換、數據校驗等功能,提供圖形化界面管理,能夠快速管理多個API網關,提高API業務安全性。
  • OpenYurt v0.3.0 重磅發布:全面提升邊緣場景下應用部署效率
    簡介OpenYurt 是由阿里雲開源的基於原生 Kubernetes 構建的、業內首個對於 Kubernetes 非侵入式的邊緣計算項目OpenYurt v0.3.0 重磅發布北京時間 2021 年 11 月 8 號,Openyurt 發布 v0.3.0 版本,首次提出節點池和單元化部署概念
  • 「Android Tools 」ApkToolBox v1.6.4 Android反編譯工具箱
    主要功能反編譯apk,回編譯apk,支持批量反編譯,回編譯dex一鍵獲取adb shell am start命令集成jadx,jd-gui支持自定義籤名支持app查殼支持odex反編譯v1.6.0 2017-08-07更新所有組件(dex2jar,apktool,smali
  • 為什麼 SoundCloud 要使用 Go 語言以及如何使用
    在這裡我想多講一下為什麼要使用和如何使用Go這樣一種開源的、剛剛發布其1.0版本的程式語言的。在我們的公司裡,所有的技術人員都是全能選手,而不是專才,這是根植於公司基因文化裡的特徵。我們希望每個人都能對公司的基礎架構中每一部分都至少 有相當的了解。更進一步,我們鼓勵技術人員在個開發團隊間調換,甚至組成新的團隊,使成員跟各團隊的衝突和摩擦儘量減少。
  • Cocos Creator v2.1.2 正式發布
    因此我們計劃減少 2.0 版本的後續維護力度,將精力集中投入到引擎後續發展中,力爭將 Cocos Creator 打造成更加專注、開放、健康的開源平臺。本次更新的 2.1.2 版本,除了常規的體驗優化和缺陷修復,還著重優化了純 2D 項目的包體,以及自動圖集的生成尺寸,建議所有 v2.0 開發者升級。
  • 史上最強科學計算程式語言?| 麻省理工的Julia
    本月初,隨著的 1.0 版本發布的消息確認,一門名為「Julia」的高性能動態程式語言一夜之間刷爆了朋友圈和
  • HBase 2.0版本正式發布
    20510個Issues,也就是說,這些Issues中共有22%的問題單被包含在2.0版本中):- 0.92.0版本於2012年1月23日發布,共包含695個Issues。- 0.94.0版本於2012年5月14日發布,共包含423個Issues。
  • 華為鴻蒙OS正式發布:可用於手機,基於微內核,寓意開天闢地
    鴻蒙系統研發始於2017年,2019年鴻蒙OS1.0版本將先落地於智慧屏,2020年鴻蒙OS2.0將應用於創新國產PC、手錶/手環和車機,2021年鴻蒙OS3.0將用於音箱和耳機,2022年有望應用於VR設備上。  據悉,即將於明日發布的智慧屏電視新品類,將率先使用鴻蒙OS。  關於鴻蒙系統能不能用到手機上?
  • 2020年Go語言盤點:新冠大流行阻擋不了Go演進的步伐
    2020 年 12 月 16 日,gopls v0.6.0[9]發布。同期,vscode-go 也正計劃將 gopls 作為默認語言伺服器[10]。3.我們共同來解釋一下:Go 語言從 2009 年宣布開源以來,經歷了兩次「高峰」:一次是 2009 年剛剛宣布開源後,一次是在 Go1.7~Go 1.9 期間。顯然,第一次的高峰實際上是一個「假高峰」,那時的 Go 連 1.0 版本都尚未發布,我們完全可以將其「剔除」掉。
  • c編譯器so easy,gcc c編譯器生成、使用動靜態庫
    2.庫的種類linux下的庫有兩種:靜態庫和共享庫(動態庫)。二者的不同點在於代碼被載入的時刻不同。靜態庫的代碼在編譯過程中已經被載入可執行程序,因此體積較大。/libc.so.6 (0×40021000)/lib/ld-linux.so.2=》 /lib/ld- linux.so.2 (0×40000000)可以看到ln命令依賴於libc庫和ld-linux庫7.可執行程序在執行的時候如何定位共享庫文件