Clojure 1.8提升了性能和開發體驗

jopen 8年前發布 | 15K 次閱讀 Clojure

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

來自: http://www.infoq.com/cn/news/2016/01/clojure-18

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!