Keep all interfaces as they may have side effects.
[SquirrelJME.git] / changelog.mkd
blobe21a5a6556fed7c7f25019a961a7e9e584abb081
1 # Changelog
3 ## 0.4.0
5 This release is dedicated to Emily, the developer of Mu, she was a close and
6 dear friend of mine. Rest in piece, you will not be forgotten.
8 This release existed through both the previous release plan and the now
9 current goal oriented releases.
11 SquirrelJME is also available on RetroArch since the implementation of
12 RatufaCoat which is written in C and is capable of using the SquirrelJME
13 Runtime.
15 _Note that this is a work in progress and not everything will run, due to_
16 _the implementation being incomplete. However it does work and is proven to_
17 _work, which means progress can continue as such. Later releases of_
18 _SquirrelJME will always be an improvement over the older versions._
20 More detailed changes:
22  * Modernized the build system to Gradle!
23    * This will make it much easier to develop and allow for contributions!
24  * Programs and Libraries
25    * `cldc-compact`
26      * Added a rehash indicator for the internal `__BucketMap__` so that
27        `java.util.Hashtable` knows when a reorder was performed.
28      * Added `java.util.Vector`, it was missing.
29      * Added support for ISO-8859-15, this is the newer encoding with the
30        Euro symbol.
31      * Added support for `os.arch`, `os.name`, and `os.version`.
32      * Corrected bug in `__CanSetPrintStream__` where if it were set to itself
33        then it could lead to infinite recursion, instead if this kind of
34        stream is attempted to be set it will use the target.
35      * Corrected `Integer.toString()` and `Long.toString()` to correctly
36        handle `MIN_VALUE`s. They are no longer printed as a bunch of
37        parenthesis and minus signs due to character overflow.
38      * Corrected `java.lang.Object.clone()` to return the new copy of the array
39        when cloning and not the original.
40      * Corrected `java.util.Objects.equals()` not correctly checking equality
41        on two objects.
42      * Fallback encoding is now UTF-8 and not ISO-8859-1.
43      * If the name of the requested resource is blank, ignore it.
44      * If a resource was not found, do a traditional search of the classpath
45        for the given resource. This technically is not valid, however some
46        games use the wrong class when looking up resources. Note that the
47        current suite will always be searched first to maintain the correct
48        behavior.
49      * Implemented `java.io.DataInputStream`.
50      * Implemented `java.io.InputStream`.
51      * Implemented `java.io.PrintStream`.
52      * Implemented `java.util.EventObject`.
53      * Implemented `java.util.Hashtable`.
54      * Implemented `java.util.LinkedHashMap`.
55      * Implemented `java.util.LinkedList`.
56      * Made the stack trace printed by `Throwable` much cleaner so that it
57        takes up less screen space and is formatted a bit better.
58      * Removed `GuestDepth`, it is no longer a concept.
59      * Return values for `line.separator`, `microedition.encoding`,
60        `microedition.configuration`, and `microedition.locale`.
61    * `demo-hello`
62      * Made the system properties array `final`.
63    * `jblend-api`
64      * Added API Stubs.
65    * `io`
66      * Fixed bug in `ByteDeque` if an attempt was made to read from an
67        empty deque.
68    * `launcher`
69      * Added the system property `cc.squirreljme.autolaunch` to automatically
70        launch a program once the program list is read.
71      * When a program is launched, instead of saying just "Loading..." instead
72        allow show the program which is being loaded in the title.
73    * `media-api`
74      * Add null media support for: players, and volume control.
75    * `meep-midlet`
76      * Handle Konami's Mobile US games using a special system request.
77      * Implement `MIDlet.checkPermission()`.
78    * `meep-rms`
79      * Added basic support for record stores.
80    * `meep-swm`
81      * Added proprietary `ExtendedTaskManager` interface which can be used
82        to specify arguments, system properties, and console output alternatives
83        to launched tasks.
84      * Workaround for broken JAR manifests which violate the specification.
85    * `midp-lcdui`
86      * Added a 12 strike font.
87      * Added capability flag for pointer events.
88      * Added support for getting the number of display colors which depends on
89        the pixel format of the display.
90      * Added support to get the number of alpha levels.
91      * Adjusted the style of the lowercase A character in the sans-serif font.
92      * Changed 16 strike font to be the large size font and made the 12 strike
93        font the medium size font.
94      * Corrected mapping of characters since SQFs are ISO-8859-1 and most games
95        may be ISO-8859-1, since some characters may be missing in the font
96        use similar graphics for them.
97      * Fully added `cc.squirreljme.runtime.lcdui.gfx.SerializedGraphics`, This
98        allows all of the graphics drawing functions to be forwarded when
99        graphics acceleration is used, previously only a subset of methods were
100        implemented.
101      * Fixed crash in text drawing when an empty string is drawn.
102      * Fully drawn default fonts.
103      * Implemented `com.nokia.mid.ui.FullCanvas`.
104      * Made all the graphics operations not throw a `TODO`, instead they will
105        just draw a placeholder graphic.
106      * Moved the graphics drawing operations to another class.
107      * Removed the 24 strike font, it was too large.
108      * Support double buffered `GameCanvas`.
109      * Update the `Display` when a command is added or removed.
110      * Use a default title for a `Displayable` if one has not been set, this
111        will be in the order of the suite name, the main class, and if those
112        are not valid then "SquirrelJME" will be used instead.
113      * When a `Displayable` is made current and it is already the current
114        displayed item, always set the title since it may have been placed in
115        the background by another application calling `setCurrent()`.
116    * `tac`
117      * Override standard output and forward to standard error while a test is
118        running, so things are not kludged.
119    * `tac-runner`
120      * Deleted as it is no longer needed.
121    * `tool-classfile`
122      * Corrected comparison behavior of `FieldReference`, it did not check the
123        class name, so if a class referred to a field of the same name when
124        using SummerCoat it will result in the wrong class field being read
125        from whatever class just happened to be set first.
126      * Corrected parsing of the stack map table.
127      * Removed `net.multiphasicapps.classfile.ExecutableCode`, it was not used.
128    * `tool-profiler`
129      * When writing the NPS snapshot, set a limit on how deep the stack can
130        traverse in the event an infinite recursive method was profiled.
131    * `vodafone-api`
132      * Added API Stubs.
133    * `zip`
134      * Added `read(byte[])` which forwards to the more optimal function
135        rather than the super-class which only performs single byte reads.
136      * When reading entries where the size is fully known, if the uncompressed
137        data size is fulfilled but there is still remaining compressed data
138        (in the case where a zero byte file is compressed to two bytes),
139        continue to read the compressed data to drain it out.
140  * Compiler Backend
141    * Added a bunch of string representations for class structures.
142    * Created a stack-cached register based compiler for Java byte code.
143    * Implemented a new tree based unit system for packages and classes.
144    * `MergedPathSet` can be initialized by iterables now.
145  * Virtual Machines
146    * General
147      * Adjusted the Shaded JAR directory layout and added a dash in the path
148        so that classes technically become invalid.
149      * Allow properties to be obtained from internally passed system
150        properties.
151      * Added string representation for the stack map table.
152      * Add ability to start tasks with command line arguments, system
153        properties, and alternative console redirection (to capture output).
154      * Correct cases where `NullPointerException` is thrown when a `Display`
155        was initialized but was not yet claimed by any program.
156      * If a JAR is not valid, the launcher will no longer fail to start since
157        the invalid JAR is just ignored.
158    * SpringCoat
159      * Add limit to stack frame depth.
160      * Add support for system properties being based to virtual machine
161        instances.
162      * Allow inheritance of static methods in classes.
163      * Profiler thread lists are easier to read because the main suite is
164        listed instead of the VM identifier.
165      * Refactored greatly to be much leaner and simplified.
166    * RatufaCoat
167      * New Virtual Machine.
168      * Fast and slim, written in C.
169  * Cleanup
170    * Removed the `test.sh` script, it was empty.
171    * Removed unused scripts due to the Gradle refactor.
173 ## 0.2.0 (December 25, 2018)
175 SquirrelJME's first release!
177 Note that this is a work in progress and not everything will run, due to
178 the implementation being incomplete. However it does work and is proven to
179 work, which means progress can continue as such. Later releases of SquirrelJME
180 will always be an improvement over the older versions.