QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:003271
用户头像

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

关注

评论

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

华为开发者大会2023(Cloud):华为云邀您共话开源

华为云开源

开源 云原生 HDC.Cloud

5年经验,不会Java性能优化,面试原地翻车

程序员小毕

程序员 后端 JVM java面试 Java性能优化

华为云CodeArts Artifact 5大特性,揭秘大型企业制品管理面纱

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

创新引擎加速数字时代:揭秘JNPF平台与云计算的完美共舞!

不在线第一只蜗牛

云计算 低代码 数字化

DevOps|从腾讯TEG CDC解散聊技术中台价值和建设

laofo

DevOps 研发效能 技术中台 组织建设

一文让你从零开始入门 K8s

伤感汤姆布利柏

看北京地铁如何利用数智底座充分发挥数据价值

用友BIP

数智底座

国产软件崛起,用友引领企业数智化转型新风向

用友BIP

国产替代

华为云图像识别Image:技术服务提供商的首选

平平无奇爱好科技

复杂的舆论场,企业该如何保障内容审核安全?

平平无奇爱好科技

MQTT 性能测试入门:常见测试场景和指标

EMQ映云科技

物联网 性能测试 mqtt

通过容器化实现前端微服务化架构设计

FinFish

小程序容器 小程序化 小程序技术 前端服务化

和鲸科技 ModelWhale 入选北京市人工智能行业赋能典型案例(2023)丨2023全球数字经济大会人工智能高峰论坛

ModelWhale

人工智能 AI 数字化 大模型 论坛

中移物联车联网项目,在 TDengine 3.0 的应用

爱倒腾的程序员

涛思数据 tdengine 时序数据库

第十八届研电赛“安谋科技杯”上海赛区决赛成功举办

脑极体

AI

[杂谈] pdfbox 2.0.28 文字水印移除操作(Acrobat/WPS)

alexgaoyh

Java PDF remove pdfbox text watermarker

高性能存储SIG月度动态:io_uring支持nvme直通,DSMS完成开发测试

OpenAnolis小助手

开源 io_uring 高性能存储 anck 龙蜥sig

复旦大学附属中山医院:利用明道云进行风险管理及器械溯源的实践案例分享

明道云

华为云语音交互服务SIS——与人打交道的智慧软件,非常值得一试

平平无奇爱好科技

华为云视频封面&摘要服务:让视频内容更具吸引力

平平无奇爱好科技

想要快速上线网站?香港虚拟主机助你一臂之力!

一只扑棱蛾子

香港虚拟主机

自从前端用上了低代码,开发速度直接起飞

伤感汤姆布利柏

揭秘!用友BIP多维数据库:企业数智化的国产利器

用友BIP

分享6个数据可视化软件工具

互联网工科生

数据可视化 可视化软件

如何克服嵌入式开发中的各种挑战,构建完善工具链并落地最佳实践?

龙智—DevSecOps解决方案

嵌入式 嵌入式开发

​瓶颈期别挣扎了,低代码或许可以帮到你

伤感汤姆布利柏

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