changelog.mkd 9.15 KB
Newer Older
1
2
# Changelog

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
3
## 0.4.0
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
4
5
6

This release is dedicated to Emily, the developer of Mu, she was a close and
dear friend of mine. Rest in piece, you will not be forgotten.
7

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
8
9
10
This release existed through both the previous release plan and the now
current goal oriented releases.

11
Now SquirrelJME has the SummerCoat virtual machine which is much lighter and
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
12
faster than SpringCoat. There should definitely be very noticeable performance
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
13
increases.
14

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
15
16
17
SquirrelJME is also available on RetroArch since the implementation of
RatufaCoat which is written in C and is capable of using the SquirrelJME
Runtime.
18

19
20
21
22
23
_Note that this is a work in progress and not everything will run, due to_
_the implementation being incomplete. However it does work and is proven to_
_work, which means progress can continue as such. Later releases of_
_SquirrelJME will always be an improvement over the older versions._

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
24
More detailed changes:
25

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

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
180
## 0.2.0 (December 25, 2018)
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
181
182

SquirrelJME's first release!
183

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
184
185
186
187
188
Note that this is a work in progress and not everything will run, due to
the implementation being incomplete. However it does work and is proven to
work, which means progress can continue as such. Later releases of SquirrelJME
will always be an improvement over the older versions.