Skip to content

Releases: uujava/mirah

Type hints support

30 Sep 14:50

Choose a tag to compare

The release of mirah with type hint support and a bunch of minor fixes not included in mainstream https://github.com/mirah/mirah/releases.

Changes to name a few:

  • Type hints replaces casting via as! macros or functional cast style
 x:Integer = 1
 def x(o:Object)
   o.kind_of? String ?  o:String.toLowerCase : "#{o}"
 end
  • Support for Object#synchronize
  • Fix abstract method validation
  • Closure over self (will be reimplemented
  • Unary minus without for parenthesis
  puts -1
  • Better do blocks vs braces block handling (no need to use parenthesis for Call arguments for do block)
  A.call 1 do
  end
  • Java doc support reimplemented as statements
  • Verify all abstract methods implemented
  • Parameter annotation support could be used for writing jaxrs services:
import javax.ws.rs.Path
import javax.ws.rs.Get
import javax.ws.rs.QueryParam
import  javax.ws.rs.DefaultValue

$Path['root']
class Resource
$Path['rest_call']
$GET
 def  rest_call(
      $DefaultValue[2]     $QueryParam['step']       step:int,
      $DefaultValue[true] $QueryParam['min-m']   hasMin:boolean,
      $DefaultValue[true] $QueryParam['max-m']  hasMax:boolean,
      $DefaultValue[true] $QueryParam['last-m']   hasLast:boolean
   ):String 
   System.out.println("step = " + @step);
   return "#{step}:#{hasMin}:#{hasMax}:#{hasLast}"
 end
  • Better support for numeric autoboxing. So one could write:
x:Integer = 1
y = 2
z = x + y
x = x + y > 3 ?  4 : 5
  • Fix package support for dashE scripts
  • Priority for macros: ability to override system macros
  • Java stub generation preserving java doc comments to be processed by javadoc tool
  • Java stub generation with preserved line number for debugging mirah code in IDE
  • Different namespace for org.objectweb.asm (jarjar to mirah.objectweb.asm)
    Usage:
 java -jar mirac.jar -e "puts 'Hello world!'" && java DashETopLevel
 java -jar mirac.jar test.mirah 
 java -jar mirac.jar -h

It will also be used as a default javalib/mirah-prev.jar for a build system with integrated mirah-parser source code