在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):hamler-lang/hamler开源软件地址(OpenSource Url):https://github.com/hamler-lang/hamler开源编程语言(OpenSource Language):Erlang 62.1%开源软件介绍(OpenSource Introduction):The Hamler Programming LanguageHamler - Haskell-style functional programming language running on Erlang VM. Hamler is a strongly-typed language with compile-time type-checking and built-in support for concurrency and distribution. Hamler empowers industries to build the next generation of scalable, reliable, real-time applications, especially for 5G, IoT, and edge computing. Why Hamler?For almost a decade, we have been developing software systems based on Erlang/OTP, especially our main product EMQ X - the scalable open-source MQTT broker. So, we have always believed that Erlang is a masterpiece of engineering. With amazing concurrency, distribution, and fault tolerance, it is one of the few general-purpose language platforms able to properly handle concurrency and soft realtime. However, from all the experience writing Erlang, we believe that the following features can help Erlang programmers better adapt to the coming wave of 5G, IoT, and edge-programming and attract more people to using BEAM.
Now all the features are available in the Hamler programming language. Features
DesignThe Hamler compiler architecture is shown as below: The Hamler 0.1 compiler was forked from PureScript 0.13.6. The Hamler source code is parsed to generate CST, then CoreErlang's IR is generated after CST -> AST -> CoreFn's syntax tree transformation, syntax analysis and type checking. The code is then used by the Erlang compiler to generate the final Beam bytecode. InstallationGet the installation package through Github Release
Linux $ tar zxvf hamler-$version.tgz -C /usr/lib/
$ ln -s /usr/lib/hamler/bin/hamler /usr/bin/hamler Centos 7 $ rpm -ivh hamler-$version-1.el7.x86_64.rpm Debian 8 / Debian 9 / Debian 10 / Ubuntu 16.04 / Ubuntu 18.04 / Ubuntu 20.04 $ dpkg -i hamler_$version_amd64.deb Homebrew(macOS) $ brew tap hamler-lang/hamler
$ brew install hamler Project Layout├── .github/workflows # ci
├── app # hamler commands, such as `compile`, `repl`, ...
├── deploy
├── doc # link to hamler documents
├── lib # hamler standard libraries
∣ ├── Control # common control structures, concurrent Process, and OTP behaviours.
∣ ├── Data # commonly used data structures and functions
∣ ├── Database # common databases in erlang, such as ETS, DETS, and Mnesia
∣ ├── Foreign
∣ ├── Network # hamler network libraries.
∣ ├── System # system libraries including IO, VM, OS, Env, File, Random, Timer, and Logger.
∣ ├── Test # hamler QuickCheck test framework
∣ ├── Foreign.hm # hamler FFI functions
∣ └── Prelude.hm # functions exported by default
├── repl
∣ └── replsrv # hamler REPL server
├── src/Language # hamler compiler source
∣ ├── Hamler
∣ ∣ ├── CodeGen.hs # convert CoreFn to CoreErlang
∣ ∣ ├── Make
∣ ∣ ├── Make.hs
∣ ∣ └── Util.hs
∣ └── Hamler.hs
├── tests
∣ ├── Test # test cases for hamler libraries
∣ ∣ ├── Control
∣ ∣ ├── Data
∣ ∣ ├── Database
∣ ∣ ├── Network
∣ ∣ └── System
∣ ├── Test.hm # entrance to execute test cases
∣ └── Main.hs
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── Setup.hs
├── hamler.cabal
├── package.yaml
└── stack.yaml
Build from source codeRequired
Building
Create a project$ mkdir demo-project
$ cd demo-project
$ hamler init
$ make
$ make run Try the interpreter$ hamler repl
> -- List, range and enums
> [1,2,3]
> [1..10]
> ['a'..'z']
> -- erlang style maps
> import Data.Map as Map
> -- New map
> m = #{"foo" => "bar", "bar" => "foo"}
> -- Match Map
> #{"foo" := a, "bar" := b} = m
> -- get, put
> Map.get "foo" m -- a = "bar"
> Map.get "bar" m -- b = "foo"
> m1 = Map.put "key" "val" m
> -- keys, values
> keys = Map.keys m
> values = Map.values m DocumentationCommunity, discussion, and supportsYou can reach the Hamler community and core team via the following channels: ContributingTo contribute to Hamler project:
Core TeamThe Hamler core team comes from EMQ Technologies Co., Ltd. now:
License & CreditsWe would like to express our great appreciation to the PureScript team and community for all years of efforts making its amazing compiler, especially CoreFn and its incredible adaptability. The hamler language project is licensed under BSD3, see LICENSE. About EMQEMQ is an open-source software company providing highly-scalable, real-time messaging and streaming platforms for IoT applications in the 5G Era. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论