#language #user #scheduling #write #io #io-uring #focus

bin+lib seaslug

一种关注简洁、可测试性、高质量调度和基于完成的IO的实验性语言

1 个不稳定版本

0.0.0 2021年3月15日

#67 in #focus

GPL-2.0 许可协议

190KB
4K SLoC

seaslug

小巧、美观、易于理解,目前还不存在 LOL

  • 非图灵完备,将可验证的终止代码放置到类似Erlang行为的良好定义的接口中
  • 强类型,强大的推断以最小化类型噪声
  • 一个从开始就旨在利用io_uring、不可变消息传递、乐观STM,并且通常关注现代调度研究的运行时
    • 运行时跟踪总体利用率和饱和度
    • 旨在最大化利用率同时最小化饱和度(对于套接字,先写后读再接受)
    • 推断出在乐观状态层中遇到的内容争用因果关系,并学习成为流量控制器,使用户避免思考争用
  • 依赖于线性逻辑来在良好指定的层次结构中强制执行错误处理,类似于Erlang管理器
  • 以解释器优先,但解释器本身旨在快速编译,以便您可以生成静态优化的本地二进制文件
  • 内置一级故障注入、模糊测试、网络模拟、基于模型的测试和并发交错探索
  • 丰富的内置数据结构、一流的JSON支持、一流的二进制解析支持
seaslug 应该是一种构建的理想语言
  • 数据库
  • 分布式系统
  • 服务器
  • 可扩展并发系统
  • 多租户基础设施
seaslug 并不旨在擅长
  • 构建自己的数据结构
  • 密集型数值处理
  • 短生命周期的CLI应用程序
  • 嵌入式编程
可能或可能不导致seaslug的想法
  • Erlang的简洁、行为、关注不可变消息传递、显式的管理器层次结构、模式匹配、二进制解析能力
  • Celf的非确定性、线性逻辑
  • 约束处理规则的验证机会
  • Prolog的声明性调试、表、纯代码的可证明性
  • 总函数编程对递归和循环的限制
seaslug是用Rust编写的,并利用了诸如
  • io_uring
  • simdjson
  • sled
  • 软件事务内存

依赖项

~2.1–4.5MB
~73K SLoC