EMQ 团队正式向全球 IoT&5G 市场发布开源函数编程语言 - Hamler
EMQ 团队很高兴正式向全球 IoT&5G 市场发布开源函数编程语言 - Hamler!
Hamler 是一门构建在 Erlang 虚拟机(VM)上的 Haskell 风格的强类型(strongly-typed)编程语言,独特地结合了编译时的类型检查推导,与对运行时高并发和软实时能力的支持。
Hamler 编程语言将赋予行业,尤其是 5G、IoT、云计算和边缘计算等潜力领域,构建下一代高可靠、可扩展、具备软实时支持应用的能力。
为什么发布 Hamler?
近十年来,我们一直在开发基于 Erlang/OTP 的软件系统,特别是我们的核心产品可伸缩分布式开源 MQTT 服务器 - EMQ X。我们一直认为 Erlang/OTP,尤其是 Beam 虚拟机是工程学的杰作。它具有出色的并发性、分布性和容错性,是少数正确处理高并发和软实时的通用语言平台,是最适合开发 IoT 和 5G 应用的平台之一。
从多年开发 Erlang 程序经验来看,我们一直期待解决两个问题:编译时类型系统与更友好的程序语法。编译时强大的类型系统有助于我们构建更可靠的软件系统;更友好的语法有助于我们创建一个繁荣的开发者社区。
为此学术界和产业界付出了近 20 年的努力。首先是 Philip Wadler 教授和 Simon Marlow 在 2000 年前后,为 Erlang 引入了类型标注和 Dialyzer 静态类型检查工具。
- Simon Marlow & Philip Wadler (1997): A practical subtyping system for Erlang
- Philip Wadler (2002): The great type hope
2008 年后,产业界有近 20 个项目,不断地尝试解决类型系统和友好语法的问题。elixir 项目引入了 Ruby 语法,吸引了部分 Ruby On Rails 社区开发者,却没有类型系统支持。Akka 项目在 JVM 上模拟实现了 Erlang/OTP ,但丧失了 Erlang/OTP 的软实时特性。Well-Typed 公司的 Cloud Haskell 项目试图在 Haskell 上模拟实现 Erlang/OTP,目前项目已经停滞。此外还有 lfe 引入了 Lisp 语法,alpaca、efene、elchemy、gleam 等项目试图引入 ML 风格语法和静态类型,目前大部分仍处于很早期的开发中。
今天,EMQ 团队做出努力,采用新的语言架构设计方式再一次尝试解决上述问题,正式向业界发布 Hamler 语言 0.1 版本!
Hamler 语言主要特性
Hamler 作为运行在 Erlang VM 上的类 Haskell 语法的编程语言,核心特性可以概括为:
- 类 Haskell 和 ML 的友好语法
- 编译时的类型检查与类型推导
- 运行时的高并发、软实时支持
结合我们多年对函数式编程的理解与开发 Erlang、Haskell 程序的经验,Hamler 语言支持函数编程大部分主要特性,我们相信这些特性可以帮助产业更好地迎接 5G、IoT 、边缘计算与云计算带来的开发浪潮,并吸引更多的开发者使用 Erlang VM - BEAM。
- 声明式与函数式编程
- 类 Haskell 与 ML 语法
- 编译时类型检查与推导
- 代数类型系统支持(ADT)
- 函数、闭包、高阶函数
- Currying and partial application
- Pattern matching, and Guards
- List comprehension
- Applicative and Monad
- 更高级的模块系统
- 高并发、软实时支持
Hamler 编译器设计
Hamler 源码经过词法分析后生成 CST,然后经过 CST -> AST -> CoreFn 的语法树变换、语法分析与类型检查后,生成 CoreErlang 的 IR 代码,然后由 Erlang 编译器生成最终的二进制 Beam 文件。
Hamler 编译器架构如下图:
Hamler 0.1 编译器最初尝试基于 GHC 8.10.1 实现,后改为基于 Purescript 0.13.6 实现。
欢迎参与 Hamler 开源项目
Hamler 函数编程语言从发起即是一个开源项目,目前核心开发者主要来自 EMQ 公司研发团队:
- Feng Lee: Hamler 语言设计者,贡献了一个梦想和大部分 libs
- Yang M: 贡献了 Hamler 编译器大部分代码
- S Hu: 来自 University of Bristol,贡献了 Hamler 大部分文档
- wivwiv: 贡献了 hamler-lang.org 网站 theme 设计
- CrazyWisdom: 贡献了 hamler-lang.org 网站域名
- ysfscream: 贡献了 hamler-lang.org 网站和 https 设置
- juan6666:贡献了 Hamler 语言 Logo 设计
Hamler 开源项目最终将与合作伙伴一起,贡献给欧盟 2049 开放源码基金会 - 2049.Foundation。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Jboot v3.2.2 发布,另个 SpringCloud 的选择
Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、html、css、js 等资源文件进行热加载。爽爽开发,快乐生活。 Jboot 目前已经开源超过了 3 年的时间,迭代了 100+ 个版本,已经被超过 1000+ 公司在使用。 Jboot 主要有以下特征: 1、基于 JFinal 的 MVC + ORM 快速开发。 2、基于ShardingSphere +Seata 分布式事务 和 分库分表。 3、基于 Dubbo 或 Motan 的 RPC 实现 4、基于 Sentinel 的分布式限流和降级 5、基于 Apollo 和 Nacos 的分布式配置中心 6、基于 EhCache 和 Redis 的分布式二级缓存 Jboot v3.2.2 更新内容如下: 优化:当项目启动的时候,优先初始化中央配置,以防止 undertow 端口等无法在中央仓库配置的问...
- 下一篇
可能是最懂架构的投资人——对话阿里云 MVP戚俊
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 戚俊的快速成长离不开恰逢其时的机遇和委以重任的伯乐,毕业一两年受邀创业。当腻了CTO,于是转行VC,作为大老板的副手再次起飞。这位90后技术人的故事,或许能给你新的启迪。 以下为戚俊的个人专访,推荐阅读(约3分钟)。 前夜难耐,曙光难得 我是一个很主动拥抱新事物的人,热衷于学习、实践新技术,从Docker到TensorFlow,只要确定技术对产品有促进作用并且可能成为趋势,我就敢把这些技术应用于产品中,属于架构师里胆子比较肥的人。 在2016年容器技术刚推出的时候,恰逢公司业务需求攀升,我们需要在扩招人员与技术升级中二选一。考虑到扩增团队的成本和风险都较大,我就做了拥抱Docker的决策。不可避免地,最初出现了很多大大小小的问题,不过最后是成功的。纵然有些风险不可控,我的决定也时常仓促大胆,好在结果总是能论证直觉的准确性。 拥抱Docker是创业以来最痛苦的一年,容器经常出问题,造成过不少事故,也直接导致公司的销售承受来自客户的许多压力。有一次容器在晚上9点多崩溃,完全无法使用,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS关闭SELinux安全模块
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程