To Do 1.0

We need to resolve the following issues before we get to 1.0

  • define the name scoping rules for member, local, parameter, and global names
  • define the name scoping rules in closures
  • define semantics of member reflection, accounting for methods, fields, properties
  • implement closure/block return/continue/break semantics (see James' proposition)
  • fix GroovyMarkup
  • decide the operators in and out and their precedence (integer division, binary or, power, spread/splice)
  • rules for splicing things (like lists into parameter arguments etc)
  • Define which subset of operators (if not all) can be overloaded
  • Define a syntax for operator overloading in Groovy, like: operator +(a, b) {} or else def '+'(a,b) {}
  • Define the syntax of overloaded operator methods in Java (g$add,g$multiply, or else mangled Unicode)
  • Define syntax and semantics of calling sequences, including usage syntaxes, actual argument processing, linkage to class members, overload resolution.
  • Define syntax and semantics of call-points (methods, properties, closures), including formal parameter definition.
  • Define rules for keyword-based actual arguments and formal parameters.
  • Define rules for spread actual arguments and formal parameters (Lisp APPLY and &REST, Java '...').
  • Ensure groovy does follow the rules for accessing a member, method or class as known as in Java
  • Write a GLS
  • require-statement to know about depending scripts, when doing runtime compilation

RI issues

  • reduce the Antlr jar size requirement to something smaller (we only need around 40Kish)
  • support annotation bytecode?
  • move to Maven 1.1 to allow us to ditch the Uber* tests?

Maybe punt until 2.0 possibilities

  • make a call on new operators we came up with in the JSR meeting
  • Borneo-style extension operators? (could handle ** etc w/o special rules)
  • Applying a method call to many items of a collection
coll*.method(123)

// is equilvalent to
coll.collect { it.method(123) }
  • add static typing support

Completed Stuff

JSR-01

  • Normal EBNF grammar from the Antlr parser
  • ..< is used instead get rid of the horrible – operator for ranges
  • introduction of the .& operator* resolve the 'method pointer' issue; foo.bar should not automatically generate a method pointer to foo's bar() method - but what syntax should we use for a method pointer? foo.&bar?
  • define the use of def / any / type names in method & variable declarations, particularly with respect to annotations and modifiers
  • decide the interconversions between methods, properties, and fields
  • "Handling nulls gracefully
coll?.property

// is equilvalent to
(coll != null) ? coll.property : null
  • intdiv() method must be used instead of previous \ operator for integer division
  • power operator (2 ** 3 == 8 or 2.power 8 etc)

JSR-02

  • figured out how to deal with accidental capture of implicit 'it' from nested blocks
  • migrated to ASM 2.0
  • fixed DocGenerator
  • JavaDoc APIs updated to the latest version
  • better error reporting, with code snippet of the offending code, and column and line number information
  • support for writing abstract classes and methods, and interfaces
  • compile-time scoping checks
  • compile-time checks for abstract classes and methods, and for interfaces

JSR-03

JSR-04

  • ditch classworlds
  • support annotation bytecode is started

Labels

 
(None)