NectarJS 是一个JavaScript编译器,他可使JS开发者作任何事情都十分有效而且使用他们最喜欢的语言。javascript
自从上个九月,我决定放弃一切其余活动,来让本身全身心的投入到这个项目中。java
这是我这样作的缘由node
当我年轻的时候,我对计算机充满了兴趣而且疯狂的迷恋它的效率。我喜欢软件开发和计算机技术。我在我五岁的时候就开始使用Windows3.1和DOS。我用C/C++写一些有趣的游戏和工具在Windows 95和Windows98或者97里。在高中,我开始学习Ruby,python,perl和Java,而且我开始使用Metasploit
.python
通过不太使人兴奋的科学学习,我决定不在浪费个人时间,而且开启我本身的事业,在cyber security作一些使人兴奋的副业。git
在2016年11月的一个下雨天,我工做致力于FortressJS,和I/O NodeJS框架的速度和安全。我如饥似渴的成为JS的粉丝,由于它十分的全能和完美的原型。github
在这个特定的项目,我尝试不一样的解决方案去打包一个APP用个人框架,像Nexe,JXCore或者EncloseJS.算法
我发现好多开发者都搜索过,我一样如此,如何打包一个JS的app。Nexe或者EncloseJS 不能编译JS;他们使用V8生成的字节码。所以他们不能彻底和NodeJS兼容。关于JXCore这个项目已经废弃了。api
除了打包,http基准,NodeJS并不比编译的语言快。我作了科学的测试去观察最有效的事情去实现打包和有效率这两件事情。浏览器
我最终找到了crystal 。Crystal是一个Ruby-like-compiler,基于LLVM,真的快。在http基准上,它速度比NodeJS快。对我来讲两种方法解决这个问题:安全
Crystal够快,够棒,可是它并不能实现全部跨平台。我喜欢Ruby的语法,可是NodeJS的生态很大,而且JS无处不在。关于Go,他是个很棒的语言,有很棒的生态,可是我我更喜欢JS(任性)。
第二种解决方案对我来讲看似疯狂,可是这听起来是充满激情的挑战:编译JS
我开始为JS建立一个编译器,我关注与编译一些JS功能在Linux平台,像数学表达式,逻辑运算。我开始编译循环和函数。管理空类型的变量也编译了一点,可是我实现了时间,测试和跨平台算法。它是在龙书 的帮助下一步一步工做的。
在两个星期在这个项目的辛苦工做后,我开始去展现,大小和时间来编译。
十分震惊的是! 展现使人印象深入(这篇文章用一个简单的算法展现了编译后的JS代码居然比C和NodeJS快)
这是一个好的开始,可是我只能编译JS在个人Linux电脑
这是我开始设想为JS弄一个CAAS(编译就是服务):写个人App和我须要的,剩下的所有交给编译器
很快的我开始这个项目,一些疯狂的想法涌上个人大脑,包括:
一个月过去了,它愈来愈消耗时间。继续这个使人兴奋的项目此外作我其余活动,我尝试和一些朋友作一个众筹活动。尽管它彷佛很疯狂,我但愿创建一个强大的社区网络去完成NectarJS,带有不少库和编译工具,招聘工程师去为它工做。
然而,显然,没有建立一个社区在开启众筹以前,我没有达到个人目标。虽然全部都落空了;可是一些人表示对这个项目十分感兴趣。
我面临这重要的决定:
再次,我选择后者
为何?
由于我坚信这个解决方案有将来,之后的JS开发者将有能力写出效率接近C语言编写者的代码,我但愿有一个团队与我一块儿为NectarJS工做。
它将作的更好
咱们自举一个alpha版本带有一个嵌入JS引擎他能在Windows,Linux,WASM和ASM.JS工做的很好。即便他不能工做的像咱们但愿的速度。它可让用户编译EcmasScript 5,和一部分ES6和ES7,咱们添加NodeJS编译库,像FS,Process和HTTP.
咱们但愿让JS变成一个普世的语言。JS是表明任意的Web浏览器,愈来愈多的表明服务端像NodeJS,而且它也经过Espruino用在物联网。然而,每一个平台都有它的特殊性。用NectarJS,咱们但愿整合全部的内容经过一种解决方案。
它是一个新的,奇妙的冒险,你能够成为它的一部分
为了尽量的快,咱们须要反馈NecatarJS来改进它。咱们有一个Slack,你能够订阅:NectarJS'Slack
NectarJS的alpha 在测试阶段将免费。你能够获得你免费的key在 nectar-lang.com/key/
你能够从github获取NectarJS客户端:
感谢您的帮助