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
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
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
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
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
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`.
62 * Made the system properties array `final`.
66 * Fixed bug in `ByteDeque` if an attempt was made to read from an
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.
74 * Add null media support for: players, and volume control.
76 * Handle Konami's Mobile US games using a special system request.
77 * Implement `MIDlet.checkPermission()`.
79 * Added basic support for record stores.
81 * Added proprietary `ExtendedTaskManager` interface which can be used
82 to specify arguments, system properties, and console output alternatives
84 * Workaround for broken JAR manifests which violate the specification.
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
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()`.
117 * Override standard output and forward to standard error while a test is
118 running, so things are not kludged.
120 * Deleted as it is no longer needed.
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.
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.
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.
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.
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
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.
159 * Add limit to stack frame depth.
160 * Add support for system properties being based to virtual machine
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.
167 * New Virtual Machine.
168 * Fast and slim, written in C.
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.