写点什么

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

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

关注

评论

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

开源IM项目OpenIM发布消息推送api,支持应用与IM互通深度融合

Geek_1ef48b

关于线程池,面试的时候你时候还打怵,这里我有话要说保证让你对线程池的各个参数一边就懂

派大星

线程池

用JAVA捋一下设计模式 4-单例模式

下雨了

设计模式 单例模式 4月月更

用JAVA捋一下设计模式23-解释器模式

下雨了

设计模式 4月月更 解释器模式

Sophon 3.0全面升级,你准备好拥抱进阶版本的ML建模平台了吗?

星环科技

XX物流同城快递架构设计文档

Steven

李智慧 高并发架构实战课

【PIMF】《伟大的计算原理》提炼“六脉神剑”认识OpenHarmony技术路线

离北况归

《伟大的计算原理》 技术路线 IMF

Linux之lastlog命令

入门小站

Linux

使用 fluro 转场动画优化页面跳转体验

岛上码农

flutter 移动端开发 安卓开发 4月月更 苹果开发

Bigdata作业 第五周

Pyel

DDD实战(7):战术设计、整体流程与首次冲刺

深清秋

DDD 软件架构设计 生鲜电商系统

图数据库渐成技术新风口,星环科技自研图数据库领跑新赛道

星环科技

在线条码生成器

入门小站

工具

“卷王”英伟达的真面目

脑极体

作业七

Geek_f3e842

架构实战营

Kubernetes官方java客户端之七:patch操作

程序员欣宸

4月月更

开源IM项目OpenIM每周迭代版本发布-群管理 阅后即焚等-v2.0.6

Geek_1ef48b

maven工具的使用

Rubble

4月日更

聊聊最近比较火的一款Web3.0应用(25/100)

hackstoic

区块链 gamefi Web3.0 stepn Play2Earn

设计电商秒杀系统

唐尤华

架构实战营

Spinner: Pinterest的工作流平台

俞凡

架构 工作流引擎 大厂实践 Pinterest

白话大数据 | 关于图数据库,没有比这篇更通俗易懂的啦

星环科技

CDH/HDP迁移之路

星环科技

如何在VC领域脱颖而出,Tiger DAO VC给出答案

BlockChain先知

Linux驱动开发-proc接口介绍

DS小龙哥

4月月更

在线XML美化格式化工具

入门小站

工具

架构实战营毕业总结(第 5 期)

唐尤华

架构实战营

兑现 Service Mesh 的新价值:精确控制“爆炸半径”

阿里巴巴云原生

用JAVA捋一下设计模式2-工厂方法模式

下雨了

设计模式 工厂方法模式 4月月更

用JAVA捋一下设计模式3-抽象工厂模式

下雨了

设计模式 抽象工厂模式 4月月更

业务流程驱动的数字化转型,中小微企业开启转型的最简单方法论

王吉伟频道

RPA 数字化转型 机器人流程自动化 业务流程自动化

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