# News

- fre aug 22 09:20:38 CEST 2014
  - Reduced overall RAM memory requirements and SCJ RAM memory requirements specifically.
- man jul 28 15:25:34 CEST 2014
  - The HVM now runs under Java 8 and supports the use of Java 8 in HVM applications. This is bound to give unforseen problems. So please report any issues.
- Thu mar 6 20:31:23 CET 2014
  - The HVM is now open source. Check out the download and licensing sections
- Sun feb 2 20:34:51 CET 2014
  - Improving performance of SCJ applications running on EV3
  - Updated icecapSDK.jar - mostly javadoc and jml, a few optimizations
- Sun jan 26 21:45:40 CET 2014
  - Arduino support works with Windows hosts
- fre jan 17 14:28:22 CET 2014
  - Arduino output (devices.Console.println("hello")) is now being routed back to Eclipse and displayed in the Eclipse console
- tir jan 14 12:17:58 CET 2014
  - Added the option to excluded classes and methods from the executable, even though the dependency analyzer includes them. Right click on a selection of items in the dependency view to exclude them. Excluded methods are declared as external native methods, which must be given an empty implementation. Do this in natives_allOS.c, or some other file. Some commonly excluded natives have been added to natives_allOS.c already. These can be used as templates for others. Excluding the proper set of native methods reduces the application size and RAM requirements, which is especially good for the Arduino Uno platform. For EV3 or Beaglebone there is not much point in playing around with exclusion of methods.
- Man dec 16 12:45:16 CET 2013
  - Added Lego EV3 support
- Sun Nov 3 10:30:05 CET 2013
  - Added support for Java level debugging in Eclipse
- Tue Oct 15 16:23:30 CEST 2013
  - Added a new Eclipse Launch Configuration to the plugin for easy launching on POSIX hosts
- Mon Sep 16 12:27:16 CEST 2013
  - Added a NXT Java application NXTBrick.tar to demonstrate how to write text to the NXT display using only hardware objects.
- Fri May 31 10:09:14 CEST 2013
  - Support for multi dimensional arrays (both interpreter and compiler)
  - Compiler optimizations:
    - Class initializers are now run before main is started. This avoids the need for checking whether they should be run later and simplifies the generated C significantly. This behavior is not proper Java behavior. It is required for SCJ applications, and may be acceptable in many embedded scenarios.
    - Object and static field access optimized. In compiled code object and static field accesses are now implemented through access to members of structs (the natural way). This allows GCC to produce tighter code than with the previous solution. Structs are automatically generated for all classes and for static class data. This works across compilation/interpretation boundaries and does not assume anything about how the compiler will layout the structs.
  - Simple reflection layer has been added to support ongoing GC work. Look at classes ObjectInfo and ClassInfo and the tests referring those. Can basically be used to scan the heap and stacks for references
  - A new Round-Robin Scheduler has been added. Very simple. Supports unprioritized preemptive scheduling of tasks. See the new Thread package in icecapSDK

- Wed Apr 24 14:42:41 CEST 2013

- Added limited reflection support. See reflect package in icecapSDK.jar, and tests in 'TestReflectClasses1' and 'TestReflectClasses2'
- Various other minor corrections

- Mon Jan 28 13:49:41 CET 2013

- Added support for application download and upgrade. Only supported for interpreted code. Contact the author for more information

- Tue Dec 18 12:47:30 CET 2012

- Exported the SCJ scoped memory model to be used in non-SCJ applications. Look at TestAllocationArea.java for an example
- Exported the SCJ Process model to be used in non-SCJ applications. Look at TestProcess*.java for an example
- Various bug fixes. Especially process preemption issues and AllocationArea issues: static data and constants are now allocated in immortal memory
- Avoid redundant check for class initialization. Reduces code size for compiled methods significantly
- SCJ refactored and uses a clean interface towards the VM (look at VM.java)

- Sat Oct 20 22:58:32 CEST 2012

- Added cr16c_interrupts.s to support preemptive scheduling on the CR16C embeedded target
- Added the CR16CRealtimeClock class to the SDK to support a real time clock for the CR16C embeedded target
- Added the TestSCJPrioritySchedule2 to the SDK. This has been verified to run on the CR16C embeedded target
- Enabling the SCJ infrastructure (including preemptive scheduling) for low-end embedded 8 and 16 bit micro controllers should be straight forward based on the CR16C example. Readers are invited to contact the author for assistance in enabling new embedded targets

- Fri Jul 6 12:45:53 CEST 2012

- Added evaluation document
- Updated SCJ level 0 + 1 in icecapSDK
- Added miniCDj benchmark to icecapSDK
- Added C benchmarks determinant.c, quicksort.c, wordreader.c and trie.c
- To measure instruction count use libpapi and instruction_count.c

- Fri Jun 15 11:51:09 CEST 2012

- Optimized AOT compiler. On 32 bit platforms the HVM is on par with KESO & FijiVM. On 8 bit platforms half as fast as KESO
- Added native task switching (no POSIX required)
- Added support of SCJ level 0 and 1 to javax.safetycritical packages
- Added new test suite to test.icecapvm.minitest packages. These tests can be used as example programs and indicate what the HVM can and cannot handle

- Fri Apr 20 12:49:14 CEST 2012

- Added preliminary support for the Thread.class and Semaphore.class
- Minimized the VM, only include those parts in the executable that are actually used. Simple Java programs are now approx 8KB
- Add support for SCJ memory areas

- Thu Mar 8 11:34:03 CET 2012

- Using the CDT code formatter (if installed) to format generated code
- Added scoped memory support
- Added support for gcc-4.7.0 and Java 7. Java 7 leaks a lot more than Java 6, so be careful

- Thu Dec 22 11:41:18 CET 2011

- Optimized AOT compilation. Speed approx 6 times faster than interpretation, approx half as fast as compiled C

- Thu Nov 3 14:34:35 CET 2011

- Added support for AOT compilation of selected methods
- Added dependency view for browsing the dependency extent
- Various optimizations

- Thu Aug 11 15:44:03 CEST 2011

- Added support for arrays in ROM

- Tue May 3 14:26:34 CEST 2011

- Fixed error with inherited static native methods called on sub class but defined in super class
- Added support for keeping entire objects or parts of objects in ROM in order to save heap memory

- Tue Apr 12 11:19:19 CEST 2011

- Added some project suggestions above

- Wed Jan 19 21:34:37 RST 2011

- Added the "wide" opcode

- Mon Jan 17 14:46:47 RST 2011

- Added HelloWorld example and explanation

- Sat Jan 15 21:14:03 RST 2011

- Fixed minor bugs in relation to big/little endian
- Added example of using UART on CR16C to print messages on the console. Implemented using 1st level interrupts and HW objects

- Wed Jan 5 22:07:46 RST 2011

- Fixed bugs in relation to long static variables
- Support added for handling exceptions thrown by static initializers
- Updated icecapSDK to support the CR16C embedded processor from National
- Embedded the interpreter into the plugin to ease installation and use

- Mon Dec 27 17:08:12 RST 2010

- Fixed scalability issue: put class and method names in ROM
- Added icecapSDK, an example of using interrupts and HW Objects on the ATMega2560