安全的全新编程语言 V 发布首个可用版本

释放双眼,带上耳机,听听看~!

文章转载开源中国

安全的全新编程语言 V 发布首个可用版本

编程语言 V 的作者今天发布了 V 的首个可用版本(预构建的二进制文件即将推出)。

安全的全新编程语言 V 发布首个可用版本

源码获取地址:https://github.com/vlang/v/releases/tag/v0.0.12

作者展示的使用 V 开发的应用示例

安全的全新编程语言 V 发布首个可用版本

V 是一个集合了 Go 的简单和 Rust 的安全特性的新语言。

主要特性:

  • 快速编译(编译器只有 400kb,而且无第三方依赖)
  • 安全
  • C/C++ 转换

示例代码:

数据库访问:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
    }
}

网络开发:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
}

给TA打赏
共{{data.count}}人
人已打赏
安全经验

Alpine Linux 3.10.0 发布,面向安全的轻量级 Linux 发行版

2019-6-21 11:12:22

安全经验

TimescaleDB 1.3.2 发布,安全修复版本

2019-6-26 11:12:22

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索