Kal
by Rob Zimmerman
This project appears to have gone dormant. It will be removed from the list soon unless new activity is noted.
Clean JavaScript alternative without callbacks and simple syntax.

Kal is a highly readable, easy-to-use language that compiles to JavaScript. It's designed to be asynchronous and can run both on node.js and in the browser. Kal makes asynchronous programming easy and clean by allowing functions to pause and wait for I/O, replacing an awkward callback syntax with a clean, simple syntax.

Kal is also expressive and offers many useful synonyms and constructs to make code readable in almost plain English.

Kal is designed with a unique philosophy:

  1. Eliminate the yucky parts of JavaScript, but keep the good stuff including the compatibility, and the great server and client runtime support.
  2. Make code as readable as possible and make writing code straightforward. Eliminate the urge (and the need) to be terse and complicated.
  3. Provide an alternative to callbacks (which look weird) and promises (which are weird) while providing excellent, easy-to-use asynchronous support.
# This demo prints out the name and size of each
# file in the user's home directory. It retrieves
# the file listing and size asynchronously using
# a standard for loop.

fs = require 'fs'
path = require 'path'

# `print` is just an alias for `console.log`
print 'Reading files...'
# asynchronous call to readdir
wait for file_list from fs.readdir process.env.HOME
# execution resumes when the API function calls back with
# a result
for file_name in file_list
  # an async call within a loop works like you'd expect
  wait for stats from fs.stat path.join(process.env.HOME, file_name)
  print file_name, stats.size
print 'Done!'
Information updated 08/28/15
View Comments