This post originated from an RSS feed registered with Ruby Buzz
by Daniel Berger.
Original Post: What would I change about Ruby?
Feed Title: Testing 1,2,3...
Feed URL: http://djberg96.livejournal.com/data/rss
Feed Description: A blog on Ruby and other stuff.
Nothing. I'd get VC funding, start my own company, hire about a dozen top-notch programmers full time (and I know who you are) and have a new language out the door before Ruby 2, Python 3000 or Perl 6 ever see the light of day. Then I would sell services (to include contractors), books and support around that language, along with applications designed for the language, such as an IDE.
But what would this language be? Mostly, it would be a lot like Ruby, so I'll list off what I would change:
Native thread support. Huge. Especially for embedding and extending the language.
SMP support - no giant interpreter lock. Also huge.
Unicode support, including the ability to parse some Unicode mathematical notation, ala Fortress.
Asynchronous methods.
Better regex engine.
AOP support (pre, post, etc).
Implicit getters and setters.
Refactor some of the core classes. Some methods are overwrought, and some are useless.
Behaviors (as per the Sydney definition).
Better project management. That means dealing with bug reports, patches, and RCR's in a timely fashion instead of letting them sit for years (or not responding at all).
Optional static typing, as a Behavior.
Transactions.
Atomic expressions.
Asynchronous looping methods.
Fine grained mixins.
Named parameters.
Make def return a (improved) Method object.
Anonymous methods via 'def'.
New parser. Goodbye yacc.
Structured warnings.
Class.aliased_methods.
Better Proc/proc integration.
Make Windows NT a first class citizen. Drop support for Windows 95/98/ME/cygwin/mingw.
Along those same lines, limit support to production platforms, instead of trying to support every OS under the sun. That means MS Windows, Solaris, Linux, FreeBSD, AIX, HP-UX, and OS X. This will reduce maintenance and simplify the build process considerably.
Continuous integration on supported platforms so that we don't have to rely as much on preview releases to smoke out bugs.
Replace the autoconf based configure with something cross platform ala Perl's build script.
Much more thorough test suite.
Better documentation.
Include several RCR's from rcrchive.net - too many to list here.
Improved standard library:
Remove the Japanese specific libraries.
Remove the rarely used or outdated libraries (abbrev).
Integrate some libraries into the core classes (io-wait).
Remove Unix specific libraries (dbm, sdbm, gdbm).
Replace some libraries (getoptlong, etc, csv) with better/cross-platform versions.
Refactor/redesign existing libraries that need it (net-http).
Add new libraries that I feel would be useful to a wide audience (kirbybase, dbi).
Maybe:
Traits.
Type inferencing (as a Behavior).
Selector namespaces.
No:
Annotations. Marginal and ugly.
List comprehensions (can be handled via improved Enumerable API).