写点什么

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

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

关注

评论

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

微服务架构下消息服务多通道设计思路

全象云低代码

微服务 低代码 后端开发 消息中间件 后端技术

从多快好省到好快省多,您的项目管理走对了吗?

禅道项目管理

项目管理

对于金融机构而言,为什么选择私有化IM比企业微信、钉钉更好?

WorkPlus

Kubernetes中API的不同版本, Alpha, Beta, Stable 都是什么?

工程师薛昭君

Kubernetes API

从0到1落地电商小程序之微服务设计

晨亮

「架构实战营」

加快云原生技术转型, 智能调度登陆华为云DevOps: 增速,节源

华为云开发者联盟

软件 DevOps 代码托管 智能调度 华为云DevOps

如何升级到 React 18

CRMEB

Nginx限速模块初探

喀拉峻

nginx

网络安全入门5天速成教程: WEB安全渗透攻防技术

网络安全学海

网络安全 安全 信息安全 渗透测试 WEB安全

你的“数学潜意识”原来可以被唤醒!

博文视点Broadview

ABAP 文件上/下载

Jasen Ye

upload abap download template GRAPHICS

Python 的排序方法 sort 和 sorted 的区别

AlwaysBeta

Python

手把手教你从Apk中取出算法

奋飞安全

android 安全 java

web前端培训如何用CSS来实现透明方格

@零度

CSS web前端

速度和质量不可兼得,为什么DevOps落地如此困难?

SoFlu软件机器人

揭秘!网易有道技术岗实习生都在做什么?

有道技术团队

招聘 实习 网易有道

知识管理在企业竞争发展中的作用

小炮

知识管理

【愚公系列】2022年03月 Docker容器 Kafka集群的搭建

愚公搬代码

3月月更

从HDFS的写入和读取中,我发现了点东西

华为云开发者联盟

hdfs HDFS写入 HDFS读取 文件读取

云原生时代已来,计算机教育如何因「云」而变?

阿里云弹性计算

云原生 ECS 计算机教育

【直播回顾】OpenHarmony知识赋能第四期第三课——I2C驱动开发

OpenHarmony开发者

OpenHarmony 驱动开发

Meetup预告|云原生时代热门监控利器解析与应用

云智慧AIOps社区

运维 云原生 安全 监控工具

Facebook 开源 Golang 实体框架 Ent 现已支持 TiDB

PingCAP

windows下C与C++执行cmd命令并实时获取输出

DS小龙哥

3月月更

数仓如何设置大小写不敏感函数

华为云开发者联盟

MySQL DWS GaussDB(DWS) 大小写不敏感函数 GUC参数

无监控不运维—浅述各种监控方案使用场景

穿过生命散发芬芳

3月月更

项目管理标准化的武林秘籍

大智若愚

团队管理 项目管理 标准化 软技能 标准框架

java培训如何用反射做简易 Spring IOC 容器

@零度

Java springloc

实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错

华为云开发者联盟

spring 容器 Spring Boot 测试 Mybatis-Plus

ABAP excel数据上传函数改造

Jasen Ye

Excel upload abap

一首古诗带来的图数据库大冒险

NebulaGraph

知识图谱 实践案例 分布式图数据库

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