0.1.2-7afd45c.0 • Published 8 months ago

@pivot-lang/pivot-lang v0.1.2-7afd45c.0

Weekly downloads
-
License
-
Repository
-
Last release
8 months ago

Pivot Lang

codecov release test

codecov

此项目目前处于早期开发阶段,不建议用于生产环境。
项目地址

安装

此处

官网

https://pivotlang.tech

CONTRIBUTING

CONTRIBUTING贡献代码

欢迎加入: QQ群 discord

dependencies

重要:如果你想参与开发,请先在项目目录make vm install,然后根据自己是linux还是mac运行make devlinux或者make devmac

特点

  • 支持静态编译与JIT
  • REPL
  • 热重载
  • 极其方便的Rust互操作
  • 支持debug
  • 支持lsp,自带vsc插件,能提供优秀的代码支持
  • 有GC,自动管理内存
  • 强大的类型推断,支持省略大部分类型标注

一些ShowCases

Ray Tracing in One Weekend in Pivot Lang

使用Pivot Lang实现的简单光追

example

编辑器支持

debug

lsp

Hello World

fn main() i64 {
    println!("hello world!");
    return 0;
}

HashTable

(没错,我们的哈希表源码也是完全用Pivot Lang写的)

use std::cols::hashtable;
use core::panic::assert;
use core::eq::*;

fn main() i64 {
    let table = hashtable::new_hash_table(10 as u64, 1 as u64);
    table.insert("hello","world");
    table.insert("bye","bye");
    assert(table.get("hello") is string);
    let v = table.get("hello") as string!;
    assert("world".eq(&v));
    return 0;
}

Fibonacci

use std::io;
fn main() i64 {
    let result = fib(10);
    println!(result);
    return 0;
}

fn fib(n: i64) i64 {
    let pre = 0;
    let nxt = 0;
    let result = 1;
    for let i = 0; i < n; i = i + 1 {
        result = result + pre;
        pre = nxt;
        nxt = result;
    }
    return result;
}

Y组合子

use core::panic;
pub fn main() i64 {
    let g = |f, x| => {
        if x == 0 {
            return 1;
        }
        return x * f(x - 1);
    };
    let fact = Y(g);
    for let x = 0; x < 10; x = x + 1 {
        panic::assert(fact(x) == fact_recursion(x));
    }
    return 0;
}


struct Func<A|F> {
    f: |Func<A|F>, A| => F;
}

impl<A|F> Func<A|F> {
    fn call(f: Func<A|F>, x: A) F {
        return self.f(f, x);
    }

}

fn Y<A|R>(g: ||A| => R, A| => R) |A| => R {
    // 下方代码的类型推断是一个很好的例子
    return |x| => {
        return |f, x| => {
            return f.call(f, x);
        }(Func{
            f: |f, x| => {
                return g(|x| => {
                    return f.call(f, x);
                }, x);
            }
        }, x);
    };
}

fn fact_recursion(x: i64) i64 {
    if x == 0 {
        return 1;
    }
    return x * fact_recursion(x - 1);
}
0.1.2-7afd45c.0

8 months ago

0.1.2-084eb11.0

8 months ago

0.1.2-a4ecbb3.0

8 months ago

0.1.2-408b4ee.0

8 months ago

0.1.2-70c6e0e.0

10 months ago

0.1.2-b511eba.0

12 months ago

0.1.2-ba35ac3.0

1 year ago

0.1.2-1846fe3.0

1 year ago

0.1.2-b19b928.0

1 year ago

0.1.2-615d95f.0

11 months ago

0.1.2-f7e74af.0

1 year ago

0.1.2-1894f9f.0

1 year ago

0.1.2-385cb17.0

1 year ago

0.1.2-eff82df.0

1 year ago

0.1.2-59d1d22.0

1 year ago

0.1.2-6cf37e8.0

1 year ago

0.1.2-79b73b8.0

1 year ago

0.1.2-160cdb1.0

1 year ago

0.1.2-61c6bbf.0

1 year ago

0.1.2-f3248a0.0

1 year ago

0.1.2-ab74f1d.0

1 year ago

0.1.2-3c2fbd4.0

1 year ago

0.1.2-1670177.0

1 year ago

0.1.2-196600c.0

1 year ago

0.1.2-d6eb96f.0

1 year ago

0.1.2-759dd5b.0

1 year ago

0.1.2-3419a23.0

1 year ago

0.1.2-c318911.0

1 year ago

0.1.2-336be9c.0

1 year ago

0.1.2-fa2981b.0

1 year ago

0.1.2-4ca4e95.0

1 year ago

0.1.2-a15f7cf.0

1 year ago

0.1.2-73622ba.0

1 year ago

0.1.2-9d413ef.0

1 year ago

0.1.2-43dee19.0

1 year ago

0.1.2-5a52685.0

1 year ago

0.1.2-cf77ad2.0

1 year ago

0.1.2-4e0ab0b.0

1 year ago

0.1.2-a775a65.0

1 year ago

0.1.2-164b3c3.0

1 year ago

0.1.2-7d80f12.0

1 year ago

0.1.2-ced72cd.0

1 year ago

0.1.2-ca7280a.0

1 year ago

0.1.2-ec71f7d.0

1 year ago

0.1.2-ed16221.0

1 year ago

0.1.2-0f45ce0.0

1 year ago

0.1.2-7d0888a.0

1 year ago

0.1.2-758ac75.0

1 year ago

0.1.2-b8f50aa.0

1 year ago

0.1.2-8fedb94.0

1 year ago

0.1.2-da884ba.0

1 year ago

0.1.2-3825386.0

1 year ago

0.1.2-d30f52e.0

1 year ago

0.1.2-c9c15cc.0

2 years ago

0.1.2-355cf61.0

2 years ago

0.1.2-4305459.0

2 years ago

0.1.2-499ef36.0

2 years ago

0.1.2-c5f6b23.0

2 years ago

0.1.2-0687a5a.0

2 years ago

0.1.2-1739aba.0

2 years ago

0.1.2-3497952.0

2 years ago

0.1.2-8c2ef5f.0

2 years ago

0.1.2-80598d1.0

2 years ago

0.1.2-aef0db6.0

2 years ago

0.1.2-f3d243b.0

2 years ago

0.1.2-c195488.0

2 years ago

0.1.2-c658bb0.0

2 years ago

0.1.2-b29ea25.0

2 years ago

0.1.2-2fe33fb.0

2 years ago

0.1.2-559ac2c.0

2 years ago

0.1.2-d2ff30a.0

2 years ago

0.1.2-c44f948.0

2 years ago

0.1.2-efb3de3.0

2 years ago

0.1.2-5e6ff62.0

2 years ago

0.1.2-feb55e0.0

2 years ago

0.1.2-5423919.0

2 years ago

0.1.2-be67dea.0

2 years ago

0.1.2-c86fd1b.0

2 years ago

0.1.2-52b2590.0

2 years ago

0.1.2-e39e77a.0

2 years ago

0.1.2-92c1210.0

2 years ago

0.1.2-b9efac2.0

2 years ago

0.1.2-7ec5206.0

2 years ago

0.1.2-86d2435.0

2 years ago

0.1.2-a10c8ec.0

2 years ago

0.1.2-f65d521.0

2 years ago

0.1.2-0790de9.0

2 years ago

0.1.2-d59fad5.0

2 years ago

0.1.2-0e2d9ac.0

2 years ago

0.1.2-251570a.0

2 years ago

0.1.2-f95f590.0

2 years ago

0.1.2-9d303ed.0

2 years ago

0.1.2-2d8d203.0

2 years ago

0.1.2-1ac9d0d.0

2 years ago

0.1.2-700525b.0

2 years ago

0.1.2-51eaff2.0

2 years ago

0.1.2-c33145c.0

2 years ago

0.1.2-c22309a.0

2 years ago

0.1.2-483d7b9.0

2 years ago

0.1.2-a804cf1.0

2 years ago

0.1.2-7c1c07d.0

2 years ago

0.1.2-8debf46.0

2 years ago

0.1.2-25ac8d8.0

2 years ago

0.1.2-9b19718.0

2 years ago

0.1.2-7916fcd.0

2 years ago

0.1.2-3f96e90.0

2 years ago

0.1.2-dcfc458.0

2 years ago

0.1.2-cb92acc.0

2 years ago

0.1.2-db8d1c3.0

2 years ago

0.1.2-0791f09.0

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago