RingoJS 0.5 was released
on May 19, 2010. Get it from the
0.5 is much better than
in most every respect. These are the highlights:
Thanks to everyone who contributed to this release with code, bug reports, or feedback:
A screencast showing installation of packages, getting API documentation for them, and use of the asynchronous HTTP client in combination with the ringo-cometd package:
"Invisible" is another stand-out track on the same album. However, for now that track honors its name and there so far seems to be no video for it.
review by John Brunner.
[16:47] <hannesw> hah - zumbrunn: you
called the pastebin rhinojs
[16:47] <hannesw> goes to show i was right about confusingness... :)
[16:47] <zumbrunn> lol
[16:47] <robi42> :D
[16:49] * robi42 admittedly almost mistyped ringojs.org sometimes just before. ;)
From one of the
very early experiments in "Weblogs"
in 1998 and the
open sourcing of the "HOP"
in the year 2000 to the widely deployed and mature
as we know it, plus the first experimental attempts at a Helma-rewrite as a
lean and mean js runtime, initially called "Rhinola"
and running on top of mod_gcj, which evolved into a candidate for
and later was codenamed
, the project
now known as RingoJS
RingoJS is a thin wrapper around Rhino providing
a CommonJS conformant module library and web application framework. If
you are using Rhino and/or are interested in CommonJS and ServerJS in general, the brand new RingoJS 0.4 release might be worth checking out.
The most notable new features:
updated CommonJS compliance
improved web application modules
optimizations regarding code caching and resource loading
unittest module; we are now shipping with 235 tests
jsdoc module using Rhino's AST feature and powering the
API docs web app
POSIX support; using JRuby's jnr-posix libraries
admin script for creating web app scaffolding
simplified Google App Engine deployment
new logging module based on log4j/SLF4J
lots of new JSGI middleware; gzip, etag, transaction, profiler, ...
new CLI arguments parser in pure JS
Pre-built downloads for Linux, Mac and Windows can be found on github:
And, of course, our new
site is now powered by RingoJS.
So you can see how easy it is to take RingoJS for a spin on Google App Engine, Hannes has produced the
Deploying RingoJS on Google App Engine
screencast for your viewing pleasure :-)
Kris Kowal and Mark Miller presented a synopsis of
topics covered at the January 2010 ECMA TC-39 meeting:
Helma 1.7.0 release
contains some bug fixes and
programmable HopObject collections
Apache Commons Daemon support, a
profiler for measuring function runtime and invocation frequency
, and skin/macro introspection, to mention just a few. It also contains an updated version of Rhino and is the first Helma release that has
enabled by default. The Helma 1.7.0 Changelog below has the nitty gritty details. Better
get it now, before there is an even better one.
Really, it's that good!
Our bugzilla has a
list of bugs fixed in Helma 1.7.0
Added ability to create HopObject collections programmatically and on the fly, without having to define them in the prototype's type.properties file.
Prototype mappings can now be defined programmatically as well using the newly added global function definePrototype().
Added Apache Commons Daemon support, making it possible to run the embedded Jetty server on port 80 for ordinary users on Unix and running Helma as service on Unix and Windows systems.
Property names in HopObjects are now case sensitive.
Added support for lazy collection loading, setting collection.lazyloading = true changes HopObject.list() to no longer fetch all contained objects, amongst other aspects.
HopObject.href() now takes an optional second argument, an object which will be encoded to a query string and added to the generated URL.
Added a profiler for measuring function runtime and invocation frequency.
Added generic header manipulation methods getHeader(), addHeader(), setHeader(), removeHeader() to the helma.Mail object.
Backported improved helma.file module from Helma NG, which takes an options object as argument and allows to specify the default charset to use.
Changed Object.prototype.dontEnum to be overridable and not read-only.
Added support for __defineGetter__ and __defineSetter__ to HopObjects.
Write locks for non-persistable properties on HopObjects are no longer checked.
A Rendering bug involving case in skin name has disappeared.
Fixed strictvars mode to produce the appropriate errors.
Fixed a bug where debug logging level wasn't unset if the debug property was set to false during runtime.
Network ports are now checked at startup by opening a ServerSocket on the port in question and seeing if it works.
Fixed a regression where dynamic relations were broken when the parent wasn't explicitely set.
Replaced encumbered code base of helma.util.Diff with an alternative implementation.
Fixed a comparison bug in loop macro in HopObject.js.
Fixed a slowdown when using getDBConnection() and oracle db that was due to running connection tests to often.
Fixed an error when retrieving HopObjects by accessname on a programmatic collection.
Fixed a problem where the return value of a HopObject's size() method did not change when removing children of a collection.
Fixed a problem with limit and offset on normal collections not working properly.
Adding an object to a grouped collection right after removing an object from that collection, which was in the same group and was added in the same request, now works.
Changed sessions for requests that do not already have one to be only created when actually needed.
Fixed a bug that caused helma.Html.isSelected() method to fail when the last argument was an array.
Added Skin.getMacros() to offer start and end properties, and getName, getHandlerType, getNamedParams, getPositionalParams and hasNestedMacros methods for skin/macro introspection.
Fixed a problem with persist() and collections using accessName.
Calling list() method with min and/or max arguments on HopObjects that are transient now works.
Changed String.URLPATTERN to use a regular expression instead of java.net.URL.
download it here.
> Keep Cool My Babies!
> Module system strawpersons
> You find what you google for.
> Move your money - It's a Wonderful Life
> ServerJS - Brewing The Perfect Storm
> While society must do things the right way, its people must find ways to do the right thing
> Eating healthier would safe the planet
> JVM Web Framework Smackdown
> Before implementing a solution to a problem, always search for a workaround, because the workaround is often better than the original solution
> If they are not ready for what they need, give them the backbone for their future baby steps
> Been there, but haven't done that
> Unus Pro Omnibus - Omnes Pro Uno
> Hang You From the Heavens by The Dead Weather
> PubSubHub against spam and walled gardens
> CometD at a glance
> Be part of the solution, not part of the problem
> Get Around by Neil Young
> Surrender by Cheap Trick
> A car has nothing to do with a carpet
> ES5 Candidate Specification
> ReverseHttp and RelayHttp
> The best solution is that one isn't needed
> New Eclipse Helma plugin project
> Is the Bespin web-based code editor the ideal future ServerJS IDE?
> First Soleil on Mont-Soleil
> Rhinola 0.8 - Server JS reduced to the minimum
> Helma turns 1.6.3
> Helma 1.6.3-rc3 ready for testing
> Helma 1.6.3 Release Candidate 2
> Release Candidate 1 of Helma 1.6.3
> Helma at the 2008 OpenExpo in Zurich
> Large Hadron Collider
> Ecmascript Harmony
> Helma at the Linuxwochen in Linz
> Stuff by George Carlin
> Is AppleScript done?
> ES4 Draft 1 and ES3.1 Draft 1
> Want ES4 in Helma today?
> Permaculture 101
> ES4 comes to IE via Screaming Monkey
> Apple's position on ECMAScript 4 proposals
> Helma Meeting Spring 2008
> Helma 1.6.2 ready to download
> Larry Lessig's case for creative freedom
> Earthlings - Can you face the truth?
> The Story of Stuff
> A Quick Start to Hello World
> Adobe's position on ES4 features, plus the Flex 3 SDK source code is now available under the MPL
> Solar cell directly splits water for hydrogen
> Openmocha and Jhino updated to 0.8
> Additional Filename Conventions
> Update to Helma 1.6.1
> Netscape, the browser, to live one more month
> Heavyweight Champion of the World by Reverend and the Makers
> SimpleDB vs CouchDB
> Nuclear plants in Switzerland are modern Orgetorixism
> Helma powered AppJet - Takeoff!
> CouchDB for Helma
> Bubble bursting friendship bracelets
> Evolving ES4 as the universal scripting language
> Helmablog and an article in Linux Pro Magazine
> More praise for Helma
> So, what's up with World Radio Switzerland?
> Helma Conspiracy Theory
> JSONPath and CouchDB
> Hold the whole program in your head, and you can manipulate it at will
> Keeping track of localhost:8080
> Rhino 1.6R6 with E4X fix and patches for Helma
> Helma 1.6 is ready!
> Junction brings Rhino on Rails to Helma
> The server-side advantage
> Rhino on Rails
> Release Candidate 3 of Helma 1.6.0
> ECMAScript 4 Reference Implementation
> Antville Summer Of Code 2007
> Helma 1.6.0-rc2
> Using H2 with Helma
> Helma warped around existing db schemas
> Rocket the Super Rabbit
> Bootstrap is out of the bag
> The last mention of Microsoft
> Helma 1.6.0-rc1
> Introducing Planet Helma
> Helma ante portas
> Shutdown-Day the Helma way
> Upcoming Helma 1.6, new reference docs and IRC channel
> Making Higgs where the Web was born
> Jala for Helma
> See you at Lift'07
> Mocha Inheritance
> Helma 1.5.3
> Fresh Rhino on Safari
> Truly Hooverphonic!
> Helma 1.5.2
> RFC 4329 application-ecmascript
> Helma 1.5.1 ready to download
> Building the Conversational Web
> Drosera steps in to debug Safari
> Helma 1.5.0 has been released!
> Helma 1.5 RC2 is ready
> Helma 1.5.0 Release Candidate 1 available for download
> FreeBSD Jails the brand new easy way
> Frodo takes on chapter 3
> No Rough Cut :-(
> Welcome to Helma!
> 40th Montreux Jazz Festival
> Rails' greatest contribution
> Consensus vs Direct Democracy
> A candidate for CSCSJS or a Mocha Fetchlet
> coComment Roundup
> Track your comments
> Sketching image queries and reinventing email
> ECMAScript - The Switzerland of development environments
> I love E4X
> Tutorial D, Industrial D and the relational model
> Stop bashing Java
> E4X Mocha Objects
> Logging and other antimatters
> Homo Oxymora
> Moving beyond Java
> Helma Trivia
> Finding Java Packages
> Catching up to Continuations
> Mighty and Beastie Licenses
> Tasting the OpenMocha Console
> "Who am I?", asks Helma
> Savety vs Freedom and other recent ramblings
> Mont-Soleil Open Air Lineup
> Rhinola - Mocha reduced to the minimum
> OpenMocha 0.6 available for download
> E4X presentation by Brendan Eich
> What is Mocha?
> Do you remember Gopher?
> The current.tv disappointment
> OpenMocha Project Roadmap
> Getting your feet wet with OpenMocha
> People flocking to see global warming
> Rails vs Struts vs Mocha
> OpenMocha is ready for a spin
> The limits of harmonization
> Le Conseil fédéral au Mont-Soleil
> Amiga History Guide
> The people must lead the executive, control the legislature and be the military
> Copyback License
> Looking at FreeBSD 6 and Beyond
> Qualified Minority Veto
> The Doom of Representative Democracy
> Violence in a real democracy
> Concordance and Subsidiarity
> Wrapping Aspects around Mocha Objects?
> Mac OS X spreading like wildfire
> Trois petits filous à Faoug
> Jackrabbit JSR 170
> Rich components for HTML 5
> More Java Harmony
> Mac goes Intel
> Google goes Rumantsch
> Oxymoronic Swiss-EU relations
> Paul Klee - An intangible man and artist
> Incrementalism in the Mozilla roadmap
> Mocha multi-threading
> Moving towards OpenMocha
> Google goes Portal
> What Bush doesn't get
> Unique and limited window of opportunity
> Persisting Client-side Errors to your Server
> Dive Into Greasemonkey
> Brown bears knock on Switzerland's door
> The experience to make what people want
> "Just" use HTTP
> Yes, what is gather?
> A Free Song for Every Swiss Citizen
> Java in Harmony
> Jan getting carried away
> Evil Google Web Accelerator?
> JSON.stringify and JSON.parse
> Ajax for Java
> The launching of launchd
> Timeless RSS
> SNIFE goes Victorinox
> AJAX is everywhere
> Papa Ratzi
> How Software Patents Work
> Free-trade accord with japan edges closer
> Mocha at a glance
> Adobe acquires Macromedia
> Safari 1.3
> View complexity is usually higher than model complexity
> Free Trade Neutrality
> SQL for Java Objects
> Security Bypass
> Exactly 1111111111 seconds
> Kurt goes Chopper
> Choosing a Java scripting language
> Spamalot's will get spammed a lot
> The visual Rhino debugger
> The Unix wars
> EU-Council adopts software patent directive
> FreeBSD baby step "1j"
> Never trust a man who can count to 1024 on his fingers
> Visiting the world's smallest city
> Finally some non-MS, non-nonsense SPF news
> Swiss cows banned from eating grass
> Ludivines, the "Green Fairy" of absinthe
> First Look At Solaris 10
> EU Commission Declines Patent Debate Restart
> Alan Kay's wisdom guiding the OpenLaszlo roadmap towards Mocha?
> 1 Kilo
> Re: FreeBSD logo design competition
> Schweizer Sagen
> Europas Eidgenossen
> Art Nouveau La Chaux-de-Fonds 2005-2006
> XMLHttpRequest glory
> The Beastie Silhouette
> The Number One Nightmare
> Safe and Idempotent Methods such as HEAD and TRACE
> Sorry, you have been verizoned.
> Daemons and Pixies and Fairies, Oh My!
> Sentient life forms as MIME-attachments: RFC 1437
> Anno 2004: CZV
> Web Developer Extension for Firefox
> Refactoring until nothing is left
> Catching XP in just 20 Minutes
> Designing the Star User Interface
> Re: SCO
> Convergence on abstraction and on browser-based Console evaluation
> Today found out that inifinite uptimes are still an oxymoron
> New aspects of woven apps
> Original Contribution License (OCL) 1.0
> Unified SPF: a grand unified theory of MARID
> BSD is designed. Linux is grown.
> 5 vor 12 bei 10 vor 10
> Mocha vs Helma?
> Schattenwahrheit: Coup d'etat underway against the Cheney Circle?
> Abschluss Bilaterale II Schweiz-EU
> From Adam Smith to Open Source
> Linux - the desktop for the rest of them
> Big Bang
> Leaky Hop Objects
> Return Path Rewriting (RPR) - Mail Forwarding in the Spam Age
> Microsoft Discloses Huge Number Of Windows Vulnerabilties
> Steuerungsabgabe statt Steuern
> Anno 2003: deployZone
> The war against terror
> The war against terror (continued)
> The relativity of Apple's market share
> Are humans animals?
> Democracy Now!
> The Cluetrain Manifesto
> Anno 1999: Der Oberhasler
> Anno 1998: volksrat.ch
> Fan traces "lost" singer Rodriguez
> Anno 1998: crossnet
> Think different
> The right time to buy Apple stock
> Geschwindigkeit vs Umdrehungszahl
> Anno 1997: Xmedia
> "The meaning of life is to improve the quality of all life"
> Cute Barristas at Peet's Coffee
> Anno 1996: CZV
> Alternative 1995
> BZ Internet Cafe
> How do I set a DEFAULT HTML-DOCUMENT?
> Searching Gopherspace
> Crossnet - der kollektive Intellekt der Schweiz
> Global Screen Design Services
> NEW-LIST digests
> ACTIV-L Digest
> Eternal September
> AOL expanding Internet services
> Anno 1993: Macro-micro navigator
> Freude herrscht!
> Anno 1992: Intouch i-station
> You register me in 50 states
> Anno 1991: mediacube
> Friedrich Dürrenmatt - Die Schweiz als Gefängnis
> Anno 1990: RasterOps
> Enable the Creative
> Photoshop Startup Memories and First Demo
> Anno 1989: Lambada by Kaoma
> Anno 1988: Perfect by Fairground Attraction
> Morgana - Selling Digital-Font based Sign-writing
> Macworld Expo 1988 Amsterdam
> Acorn Archimedes RISC Technology
> Anno 1987: Knowledge Navigator
> Anno 1986: Max Headroom in the News
> Anno 1985: Amiga 1000
> Hello World on C128 in CP/M Mode
> Analog Desktop Publishing in 1984
> Anno 1982: Vic-20
> Postel's Law
> The Future Is Unwritten
> Earth Mother and Fortieth Floor by Lesley Duncan
> La Linea by Osvaldo Cavandoli
> California by Joni Mitchell
> Supplement to the Whole Earth Catalog
> Neil Young
> Whole Earth Catalog
> Anno 1968: Mony Mony and People Got to Be Free
> August 28th 1968: William Buckley Vs Gore Vidal