写点什么

Clojure 1.8 提升了性能和开发体验

  • 2016-01-29
  • 本文字数:991 字

    阅读完需:约 3 分钟

2016 年 1 月初,身为 Clojure 社区主要开发者之一的 Alex Miller宣布了Clojure 的最新版本。Clojure 1.8 的主要新特性包括“直链(Direct Linking)”、字符串函数和套接字服务器。此外,它还包含一些小的改进及30 多项Bug 修复。

Clojure 是原始 Lisp 编程语言的一种现代化方言,初次出现是在 2007 年 10 月,第一个稳定版本于 2009 年发布。从那时起,Clojure 就大体上保持着每年一个版本的发布节奏。不过,最新评论表明,其目标是每6 个月发布一个新版本

这三个主要的新特性之间没有关联,但是它们为Clojure 用户带来了很大的好处。一方面,直链使用户可以直接静态调用其他函数,与使用普通的两步间接调用相比,提升了性能。而且,这还使JVM 可以通过JIT(Just In Time)编译优化代码。这种方法的其中一个缺点是方法丧失了动态性,因此,方法无法在执行过程中重定义。不过,用户可以使用元数据“^redef”注解任意函数,从而有选择地关闭该标识。在1.8 版本中,Clojure 核心中所有函数的这个标识在默认情况下都是打开的。

另一方面,该版本新增了多个原生字符串函数:index-of、last-index-of、starts-with?、ends-with? 和includes?。此前,这类功能只能直接调用Java 的String 方法(通过名为 Java Interop 的 Java 原生代码交互工具)。与直链的目标相反,新增的字符串函数的运行效率实际上比现有的可选方案略低。不过,这些函数简化了开发,使得该特性以 29 票的得票数成为 Clojure JIRA 任务中最受欢迎的任务之一。这些函数也添加到了 ClojureScript 中。

最后,新增的套接字服务器功能使开发人员可以为任何 Clojure 应用程序创建一个套接字服务器,只需要简单地在命令行或配置文件中提供一个函数名作为参数。该功能配以新增的 clojure.core.server/repl 函数,可以用于同一个正在运行的、用于调式或开发目的的应用程序交互,因为 REPL 模块能够在运行时查看变量甚至重定义函数。不过,这个特性不大可能用在生产环境中,这主要有两个方面的原因:一是开放一个可以同正在运行的应用程序进行交互的服务器,明显会让人有安全上的担忧;二是如果启用直链(如果关注性能,那么就可能启用),那么方法重定义就无法使用了,这会削弱 REPL 服务器的价值。

除了这些特性外,Clojure 1.8 还包含许多其他的变更,感兴趣的读者可以查看官方的发布说明

查看英文原文: Clojure 1.8 Improves Performance and Development Experience

2016-01-29 18:003427
用户头像

发布了 1008 篇内容, 共 423.5 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

IDEA插件之Mybatis Log plugin破解!!!

不才陈某

Java idea插件

SpreadJS 纯前端表格控件应用案例:在线问卷系统

葡萄城技术团队

LeetCode题解:20. 有效的括号,while循环replace,JavaScript,详细注释

Lee Chen

大前端 LeetCode

熔断、限流的一些理解

elfkingw

Grabana:使用 Golang 或 Yaml 生成 Grafana Dashboard

郭旭东

Grafana Go 语言

知乎李大海与阿里云贾扬清联合直播,AI大咖眼中的行业前景

InfoQ_967a83c6d0d7

30万奖金等你拿!Apache Flink 极客挑战赛入门指南(附Demo)

Apache Flink

flink

安全及高可用策略

Lane

极客大学架构师训练营

力扣1514——概率最大的路径

健健

算法 最短路径

USDT承兑商系统开发,USDT支付系统软件搭建

13530558032

区块链钱包系统开发服务商,区块链钱包应用搭建

13530558032

朱嘉明:新冠肺炎疫情如何改变社会成本观念和结构

CECBC

社会结构 社会观念

Week11

丿淡忘

程序员不得不知的软技能

架构精进之路

软技能

合同、封条、电梯……通通上链!

CECBC

区块链技术 监管平台

架构训练营第十一周作业

张锐

作为程序员,推荐5种编程语言!

代码制造者

Python 编程语言 低代码 C语言 零代码

针对目前在线教育存在问题的解决方案

anyRTC开发者

WebRTC 在线教育 直播 安卓

深圳数字货币交易所开发商,币币撮合交易软件开发

13530558032

XSKY S3 Console 为对象存储系统赋能

XSKY星辰天合

高可用注意点

dony.zhang

高可用 高可用系统的架构 高可用系统的运维

架构师0期Week11作业2

Nan Jiang

java 是什么?作用是什么?

InfoQ_34a83d636158

安全&高可用架构

dony.zhang

高可用 安全 安全架构 高可用系统的架构 高可用系统的运维

架构训练营第十一周感悟

张锐

导致系统不可用的原因有哪些?

leis

解码微盟半年财报:同比增长59.9%,SaaS商业版图不断扩大

ToB行业头条

SaaS 微盟

架构师0期Week11作业1

Nan Jiang

源码解析 | 万字长文详解 Flink 中的 CopyOnWriteStateTable

Apache Flink

flink

合约跟单APP开发模式,合约跟单系统源码搭建

13530558032

调度选得好,下班回家早

易观大数据

Clojure 1.8提升了性能和开发体验_Java_Abraham Marín Pérez_InfoQ精选文章