Perl 5.20 released, Openduty open sourced and Numeral.js counted – Snippets

Perl 5.20: After 12 months of development work, Perl 5.20 has arrived with around 470,000 lines of changes from 124 authors. Your first port of call is the perldelta for 5.20 which lists all the changes – Unicode 6.3 support, a new slice syntax, better 64 bit support, better locale handling, more consitent tainting, do subroutine made a syntax error, quotey escape changes, performance enhancements, lots of module upgreades and some new modules too… the list is huge and if you’re a Perl developer you’ll have plenty to dig into there.

Openduty: Do you have a need to be paged or page others when things go awry? Openduty is Ustream’s contribution to handle escalating incidents like that and its just been open sourced. Developed at a company hackathon, it’s API compatible with PagerDuty, one of the leaders in commercial escalation, works with nagios monitoring and can generate email, XMPP, SMS, Phone and Push notifications. Openduty is licensed under the DWTFYWPL, the licence that won’t make it past most profanity filters. Who you gonna call? Everyone who’s on call of course.

Numeral.js: Got some numbers to format in your JavaScript? Numeral.js is a minimal library to help out with that offering formatting (and unformatting) for numbers. There’s other ways of formatting, like the nearly full implementation of ECMAScript Internationalisation that is Intl, but if you want something quick to use light you might like Numeral.js. It was inspired by Moment.js, the time formatting library.

LLVM 3.4, Arch 2014-01-05, Mirantis OpenStack 4.0 and Paper encryption – Snippets


  • LLVM hits 3.4: The LLVM project’s compilers and more toolchain has reached version 3.4 and the announcement counts down the new features; Clang now has all of the working draft for C++1y standard working, a better static analyser, a “clang-format” for beautiful code in your preferred style and an experimental driver which should let Clang be used with Visual Studio. There’s also lots of performance enhancements in the code generator. Read more in the release notes and if you’re the kind of person who builds their own LLVM kit, head to the releases page to download.

  • Arch’s first 2014 update: The first of what will be many, the Arch Linux project has released an update (2014-01-05) to the distro. If you already use Arch, you know that as long as you are up to date you don’t need this. For folks wanting to check out Arch, this update is where you’d start. Well, there and the installation guide or beginner’s guide.

  • Mirantis OpenStack update: Mirantis have released Mirantis OpenStack 4.0 which you can download. It includes a number of “hardened” packages and the Fuel management tool which can deploy out to CentOS or Ubuntu.

  • Paper powered encryption: The folks at LightBlueTouchPaper have come up with an interesting little paper based, one-time pad driven encryption scheme with a Python script for generating encryption tables. Read more and generate a table or two at the blog posting.

Ruby 2.1 rolls out a performance push

Ruby_logoRuby 2.1 has been released on Christmas day and is billed as offering “speedup without severe incompatibilities”. The performance boost is down to a new method cache in the VM and a new generational garbage collection system. The old method cache was cleared eacg time a new method was defined but now only that cache damage has been tracked down and reduced and a future of a more optimal larger cache has been opened up.

The generational GC was added as part of an optimisation of Ruby’s object management which also adds hooks for allocation and deallocation – there’s a deeper look into these changes in Koichi Sasada’s presentation(PDF) from RubyConf 2013. The GNU Multiple Precision Arithmetic Library is also now used to accelerate Bignum calculations.

Beyond the runtime changes, there are some language changes such as a new method for Array – to_h – to turn key/value pairs into a hash, a new syntax for rational numbers so that 1//2 is the same as Rational(1,2) and the addition of an explaining cause to Exceptions, but they seem to be few and far between. A full list is in the NEWS file which also notes any compatibility issues. Source for Ruby 2.1 is available now for download and will most probably be appearing in various binary forms over the coming weeks.

The performance improvements, although useful, will not help the perception that, outside of the CRUD web applications where Ruby and Rails made their mark, the native form of the language benchmarks as one of the slower languages out there. They will at least though help Ruby when it comes to a developer deciding which tradeoffs they want to make.

IDEA 13, Java crypto, FreeBSD 10 beta 4, Rails update, Go 1.2 – Snippets


  • IntelliJ IDEA 13: Jetbrains has rolled out the latest version of its IntelliJ IDEA Java IDE. Version 13 gets a big refresh on the user interface with new light look and feel on Windows and Linux and toolbars hidden by default, better visualisation of errors and warnings with “lens mode”, comment/string only searching, built in SSH terminal, Java 8 support and a presentation mode for talking about coding. All those features, along with enhancements to Android, Gradle, Groovy, Scala and version control support are in the community version. The commercial Ultimate edition includes JSF 2.2 support, batch job code assistance, JAX-RS 2.0 annotation handling, more app server support, Spring context configuration and MVC view, improved JavaScript debugger, CSS extract refactorings, DART support and many enhancements to the database viewing and support. Full details are in the What’s New page for the new release. The open source Community version and a 30 day trial of the commercial version are both available to download.

  • Bouncy Castle Crypto update: Adding support for client side TLS 1.2 and DTLS 1.2, along with ECDH and ECDSA for the OpenPGP library and many other cryptography options, the splendidly named Legion of the Bouncy Castle have updated their Java Crypto libraries to version 1.5.0 – further details in the release notes.

  • FreeBSD 10 beta 4: The announcement of FreeBSD 10 Beta 4 has also seen the gentle push of the scheduled release date to 2 January 2014 with a December full of release candidates. The in-development release notes give an idea of what to expect as will this article from September.

  • Rails updates for security: There’s updated Rails with the release of 3.2.16 and 4.0.2 which address four or five CVE-numbered vulnerabilities. The problems fixed include various XSS vulnerabilities, a denial of service hole and fixes for a previous incomplete security fix.

  • Go 1.2 is go: Go 1.2 is now official with the announcement that, after 7 months, the latest modifications to the language, library and toolchain are now available. Full details in the release notes. Updates are expected to come on something closer to the 7 month cycle in future.

1.0aplooza – Ceylon and Dart go 1.0

ceylondartRed Hat and Google have announced version 1.0’s of their long baking new languages, Ceylon 1.0.0 and Dart SDK 1.0. With three years of work on Ceylon and at least two years behind Dart, are they worth looking at?

Red Hat’s Ceylon comes from Gavin King’s team at the company who’ve been working for around three years on a language which initially targeted the Java virtual machine but now also can generate JavaScript. Created as a Java (the language) replacement, it features the a fairly familiar curly brace syntax, adds in declarative syntax for tree structures, removes primitive types as part of a new powerful static type system and mixes in mixin inheritance.

But thats just scratching the surface – the documentation’s introduction gives a better feel for the extensive re-envisioning of a large systems language. There’s also a tour to get some hands on experience and an Eclipse-based IDE for Ceylon already. The language and tools are all Apache 2.0 Licensed and source is up on GitHub. The JVM is a hotbed for new languages and Ceylon adds to the mix with what feels like a pragmatic approach.

Meanwhile, Google’s Dart 1.0 doesn’t go near the JVM; it’s designed for browsers and specifically as an alternative to JavaScript. Although Dart can translate to JavaScript that is predominantly so Dart code can be run in current browsers. Google’s long game is to see a Dart virtual machine in every browser and get higher performance browser code. The language on first look feels like a more formal JavaScript, but with a push on readability, structure and expressiveness. On second look, it feels more like Java, with annotations, an import system,  Its libraries bring along support for streams, lazy iterables, futures, a cleaner DOM API and more. There’s plenty to look at and this presentation from Google I/O covers more of the language.

CoffeeScript, TypeScript and other browser-centric languages work more in harmony with JavaScript and don’t set out to replace it entirely, but thats what Dart has set out to do and that may be its biggest problem – the big performance benefits of Dart come with most browsers having the Dart virtual machine, but with only Google onboard, that isn’t going to happen. The JavaScript tool chain has some neat tricks though like tree-shaking (reducing library dependency) and minifying.

Will it gain traction? There’s a whole web of JavaScript that’s a standing bet against it and personally I find it somewhat hard to get excited by the language itself; Brendan Eich’s ten day hack that is JavaScript is still impressive, if rich in dark corners and sharp edges, but it does have cross-vendor support and standards backing it up. But if the development of JavaScript as a language and a standard stumbles again as it has in the past, Dart may have a window. The tipping point to look for is when another major browser maker adopts it. Dart is also open source (BSD licence) and source code is available on its Google Code project.

What Ceylon and Dart do have in common is their version 1.0’s are richly tooled and documented. That should, in itself, be a model for anyone wanting to bring a new language to the world. Anyone wanting to look at either language is not going to have difficulty getting started.

The Rubinus/Ruby Ruckus

rubinius_logo_black_on_whiteIt seems to be all going on with the developers of Rubinus, the LLVM JIT-powered Ruby implementation which recently hit version 2.0.0. First came the news that Engine Yard had ended their sponsorship for the project saying that “we no longer feel like the project needs any help from us to accelerate” – the ending of sponsorship will, they say, let them invest more in other emerging projects.

With that announcement made, Rubinus lead Brian Shirai said “I have been working to simplify and focus the project”; funding changes do tend to allow projects to step back and look at their goals. In this case, the results of that work turned up in an announcement of Rubinus X.

Rubinus X is billed as an experiment in modernising Ruby, which the project’s home page declares as no longer relevant to modern computing. The plan appears to be a major reworking of Ruby – concurrency with Promises and non-blocking I/O, persistent data structures, object composition, code loading as an API, consistency through composing operations from system primitives, immutable strings and a more explicit OO model. There is also a clean up of the language planned with a single encoding used within running programs, the removal of position-significant arguments in API calls, a defined numeric tower and the purging of Perl-inspired features and global variables.

Shirai declared “Ruby is a dying language” which triggered much discussion over on sites like Hacker News about whether Ruby was dying or not and whether Node.js was the new Ruby/Rails but very little conversation on the merits of the Rubinus X plan. More details on how the Rubinus X project will develop will be disclosed in the coming days via the mailing list (which has already got 570 signups). Rubinus X does seem to have some ambitious goals and with the development taking place outside the mainstream of Ruby, it shouldn’t have an impact on Ruby development at least until it has proven itself. What affect it will have on Rubinus development is unclear though; with no one paid to develop it, resources will be tight. Definitely one to keep an eye on.