Skiplang 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Skiplang 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Skiplang 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 JavaScript
操作系统 跨平台
软件类型 开源软件
所属分类 编程语言
开源组织 Facebook
地区 不详
投 递 者 王练
适用人群 未知
收录时间 2018-09-28

软件简介

Skip 是 Facebook 开发的一门实验性质的编程语言。

作为一个研究项目,Skip 的主要目标是探索支持准确、高效、基于 memoization 的缓存和缓存失效的语言和运行时。Skip 通过静态类型系统实现了这一点,该系统具备跟踪可变性,同时支持现代语言特性,如 trait、泛型和子类型。

Skip  从 2015 年到 2018 年开发了三年 ,如今 Facebook 已不再积极开发,而是选择开源,以使编程语言研究社区能够继续在语言设计与实现、编译器和库的基础上进行研究和构建。

Skip 是一种通用编程语言,可跟踪副作用,提供反应无效的缓存、符合人体工程学和安全的并行性,以及高效的垃圾收集。Skip 是静态类型的,并使用 LLVM 提前编译,以生成高度优化的可执行文件。

反应无效的缓存

Skip 的主要新语言特性是精确跟踪副作用,包括值的可变性以及区分非确定性数据源和能够提供反应无效的数据源(在数据发生变化时告诉 Skip )。当 Skip 的类型系统能够证明在给定的函数边界没有副作用时,开发者可以选择安全地记忆该计算,在运行时确保当底层数据变化时先前缓存的值无效。

安全并行化

Skip 支持两种互补形式的并发编程,由于 Skip 跟踪副作用,这两种形式都避免了常见的线程安全问题。首先,Skip 支持使用 async / await 语法进行符合人体工程学的异步计算。由于 Skip 跟踪副作用,异步计算不能引用可变状态,因此可以安全地并行执行(因此独立的异步计算可以并行继续)。其次,Skip 具有用于直接并行计算的 API ,再次利用其副作用跟踪来防止线程安全问题,如共享对可变状态的访问。

高效且可预测的垃圾回收器

Skip 使用一种新颖的内存管理方法,将典型垃圾收集器的各个方面与更简单的线性(缓冲)分配方案相结合。由于 Skip 跟踪副作用,垃圾回收器只需扫描从底层计算处可访问的内存。实际上,这意味着开发者可以编写具有可预测 GC 开销的代码。

面向函数和面向对象的混合语言

Skip 以混合面向函数和对象为特色,通过精心整合形成一种紧密结合的语言。与函数式语言一样,Skip 是面向表达式的,支持抽象数据类型、模式匹配、简单 lambdas、高阶函数,以及(可选)强制执行纯/引用透明的 API boundaries 。与命令式/ OO语言类似,Skip 支持具备继承的类、可变对象、循环和 early return 。Skip 还整合了来自 “systems” 语言的理念,以支持低开销抽象,通过值类的紧凑对象储存布局,以及确保使用静态方法调度实现代码专业化的模式。 

优秀的开发体验

Skip 从设计之初就专注提高开发体验,具有更快速的迭代速度。编译器支持增量类型检查,提供常见语法错误的提示,帮助新手学习语言、识别方法/类名的错误,甚至识别 Skip 的标准库方法名称的常见别名,并在 Skip 中给出正确名称的建议。Skip 还具有代码格式化工具,以确保一致的代码风格,以及运行代码模块的工具。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
2018/09/29 08:10

Facebook 开源 Skip,面向对象+函数式编程语言

近日,Facebook 开源了全新语言 Skip,这是 Facebook 内部开发的一个实验性质编程语言,Facebook 表示,Skip 项目于 2018 年完成,今后将不再积极开发。 Skip 的官方一句话介绍是“跳过那些你已经做过计算的”(skip the things you have already computed),这也就是它作为一个研究项目的主要目标,它要探索编程语言和运行时可以怎样去支持准确、高效的基于记忆的缓存和缓存失效。而通过静态类型系统追踪可变性,Skip 完成了这...

21
7
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
rfc6902 存在拒绝服务漏洞
拒绝服务
rfc6902 是 RFC6902(补丁和差异)的完整实现 此软件包的受影响版本容易受到原型污染。
MPS-2022-14012
2022-08-08 18:29
Ajv 输入验证错误漏洞
输入验证不恰当
Ajv 6.12.2版本中的ajv.validate()函数中存在输入验证错误漏洞。攻击者可利用该漏洞执行代码或造成拒绝服务。
CVE-2020-15366 MPS-2020-10525
2022-08-08 18:29
npm node-fetch 安全漏洞
不加限制或调节的资源分配
node-fetch 2.6.1和3.0.0-beta版本中存在安全漏洞。该漏洞源于内容大小超过限制时,将永远不会抛出FetchError。
CVE-2020-15168 MPS-2020-12719
2022-08-08 18:29
lodash输入验证错误漏洞
原型污染
lodash是一款开源的JavaScript实用程序库。 lodash 4.17.15及之前版本中存在输入验证错误漏洞。远程攻击者可借助'merge'、'mergeWith'和'defaultsDeep'函数利用该漏洞在系统上执行任意代码。
CVE-2020-8203 MPS-2020-15679
2022-08-08 18:29
lodash 命令注入漏洞
代码注入
lodash是一个提供模块化、性能和附加功能的现代 JavaScript 实用程序库。 4.17.21 之前的 Lodash 版本容易通过模板函数进行命令注入。
CVE-2021-23337 MPS-2021-2638
2022-08-08 18:29
autolinker 存在拒绝服务漏洞
拒绝服务
autolinker 是一个在给定文本/HTML 块中自动链接 URL、电子邮件地址、电话号码、Twitter 句柄和主题标签的实用程序。由于未终止的 img src,此软件包的受影响版本容易受到拒绝服务 (DoS) 的攻击。
MPS-2022-13564
2022-08-08 18:29
js-yaml 存在拒绝服务漏洞
拒绝服务
js-yaml 是一种人性化的数据序列化语言。此软件包的受影响版本容易受到拒绝服务 (DoS) 的攻击。
MPS-2022-13820
2022-08-08 18:29
lodash 存在拒绝服务漏洞
拒绝服务
lodash 是一个现代 JavaScript 实用程序库,提供模块化、性能和附加功能。此软件包的受影响版本容易通过 setWith 和 set 函数受到原型污染。
MPS-2022-13842
2022-08-08 18:29
extend module 输入验证错误漏洞
输入验证不恰当
extend module是一个jQuery的经典extend()方法的端口。 deep-extend node模块0.5.0及之前版本中的‘utilities’函数存在输入验证错误漏洞。攻击者可利用该漏洞造成服务器崩溃或返回500。
CVE-2018-3750 MPS-2018-8705
2022-08-08 18:29
remarkable 跨站脚本漏洞
XSS
remarkable是一款Markdown解析器。 remarkable 1.7.1版本中存在跨站脚本漏洞。该漏洞源于WEB应用缺少对客户端数据的正确验证。攻击者可利用该漏洞执行客户端代码。
CVE-2019-12043 MPS-2019-5073
2022-08-08 18:29
ua-parser-js 资源管理错误漏洞
拒绝服务
ua-parser-js是基于JavaScript的User-Agent字符串解析器。可以在浏览器(客户端)或node.js(服务器端)环境中使用。也可以作为jQuery / Zepto插件,Bower / Meteor软件包和RequireJS / AMD模块使用。 ua-parser-js 0.7.23 之前版本存在安全漏洞,该漏洞源于ue -parser-js很容易受到正则表达式在多个正则表达式中的拒绝服务(ReDoS)的攻击。
CVE-2020-7793 MPS-2020-17428
2022-08-08 18:29
Yargs Y18n 输入验证错误漏洞
动态确定对象属性修改的控制不恰当
Yargs Y18n是Yargs个人开发者的一个类似I18n的由Js编写的代码库。 y18n before 3.2.2, 4.0.1 and 5.0.5版本存在输入验证错误漏洞,该漏洞源于网络系统或产品未对输入的数据进行正确的验证。
CVE-2020-7774 MPS-2020-17543
2022-08-08 18:29
Eran Hammer cryptiles 安全漏洞
信息熵不充分
Eran Hammer cryptiles是一款通用加密工具。 Eran Hammer cryptiles 4.1.1之前版本中的randomDigits()方法存在安全漏洞。攻击者可利用该漏洞暴力破解随机数。
CVE-2018-1000620 MPS-2018-9401
2022-08-08 18:29
npm dot-prop 安全漏洞
原型污染
4.2.1 之前的 dot-prop npm 包版本和 5.1.1 之前的 5.x 版本中的原型污染漏洞允许攻击者向 JavaScript 语言构造(例如对象)添加任意属性。
CVE-2020-8116 MPS-2020-1734
2022-08-08 18:29
nodejs 资源管理错误漏洞
拒绝服务
nodejs是是一个基于ChromeV8引擎的JavaScript运行环境通过对Chromev8引擎进行了封装以及使用事件驱动和非阻塞IO的应用让Javascript开发高性能的后台应用成为了可能。 nodejs-glob-parent 存在安全漏洞,该漏洞源于正则表达式拒绝服务。
CVE-2020-28469 MPS-2021-7827
2022-08-08 18:29
shelljs 安全漏洞
特权管理不恰当
shelljs是基于Node.js API 的 Unix shell 命令的可移植(Windows/Linux/OS X)实现。 shelljs存在安全漏洞,该漏洞源于不适当的权限管理,攻击者可利用该漏洞进行越权访问。
CVE-2022-0144 MPS-2022-0508
2022-08-08 18:29
PCRE 资源管理错误漏洞
未经控制的递归
PCRE(Perl Compatible Regular Expressions)是软件开发者Philip Hazel所研发的一个使用C语言编写的开源正则表达式函数库。 PCRE 8.41版本中的pcre_exec.c文件的‘match’函数的OP_KETRMAX功能存在资源管理错误漏洞。攻击者可利用该漏洞耗尽栈(无限递归)。
CVE-2017-11164 MPS-2017-7460
2022-08-08 18:29
Hoek 访问控制错误漏洞
MAID
Hoek是一个hapi系统的实现。 Hoek 4.2.0之前版本和5.0.3之前的5.0.x版本中存在访问控制错误漏洞。本地攻击者可借助‘merge’和‘applyToDefaults’函数利用该漏洞修改‘Object’的原型。
CVE-2018-3728 MPS-2018-3882
2022-08-08 18:29
minimist 输入验证错误漏洞
原型污染
minimist是一款命令行参数解析工具。 minimist 1.2.2之前版本存在输入验证错误漏洞。攻击者可借助‘constructor’和‘__proto__’ payload利用该漏洞添加或修改Object.prototype的属性。
CVE-2020-7598 MPS-2020-3516
2022-08-08 18:29
node-tar 路径遍历漏洞
路径遍历
node-tar是一款用于文件压缩/解压缩的软件包。 npm node-tar 存在路径遍历漏洞,该漏洞源于4.4.18、5.0.10和6.1.9之前的npm包“tar”(又名node-tar)存在任意文件创建覆盖和任意代码执行漏洞。攻击者可利用该漏洞访问受限目录之外的位置。
CVE-2021-37713 MPS-2021-28489
2022-08-08 18:29
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
9 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部