changelog.mkd 8.04 KB
Newer Older
1
2
# Changelog

3
# 0.4.0 (July 4, 2019)
4

5
Now SquirrelJME has the SummerCoat virtual machine which is much lighter and
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
6
7
faster than SpringCoat. There should definitely be very noticable performance
increases.
8

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
9
10
11
SquirrelJME is also available on RetroArch since the implementation of
RatufaCoat which is written in C and is capable of using the SquirrelJME
Runtime.
12

13
14
15
16
17
_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
18
More detailed changes:
19

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
20
 * Build system
21
   * Builder
22
23
     * Allow the build system to launch binaries in a VM even if they have no
       source code.
24
25
26
27
28
29
30
     * Handle cases during compilation if a dependency has no source code.
     * If an attempt is made to compile a binary with no source code, throw a
       new exception type indicating this rather than the generic failure
       exception because this case can be handled.
     * When shading JARs for distribution, ignore entries in JARs which are
       directories. Directories do not need to appear in the JAR, however they
       may still be implicit within ZIPs.
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
31
32
   * Launching
     * An alternative VM may be specified.
33
34
     * 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
35
36
     * The profiler snapshot can be written to a specific file.
     * System properties may be defined and passed to the launched program.
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
37
   * Started work on JavaDoc generation.
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
38
39
40
41
42
43
 * Tests
   * Adjusted the results in the logarithm test to adjust the ulp to what
     SquirrelJME generates. The results are still valid as it is valid to
     be within a 1 ulp range, however the test framework only supports
     exact values.
   * Added the missing _mimemessage_ file for the MIME file decoding test.
44
45
   * Allow tests to timeout so that they do not run forever in the event of
     some kind of deadlock.
46
   * Refactored the test framework to be easier to maintain.
47
48
 * Programs and Libraries
   * `cldc-compact`
49
50
     * Added a rehash indicator for the internal `__BucketMap__` so that
       `java.util.Hashtable` knows when a reorder was performed.
51
     * Added `java.util.Vector`, it was missing.
52
53
     * Added support for ISO-8859-15, this is the newer encoding with the
       Euro symbol.
54
55
56
     * 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.
57
     * If the name of the requested resource is blank, ignore it.
58
59
60
61
62
     * 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.
63
64
     * Implemented `java.io.InputStream`.
     * Implemented `java.util.EventObject`.
65
     * Implemented `java.util.Hashtable`.
66
     * Implemented `java.util.LinkedHashMap`.
67
     * Implemented `java.util.LinkedList`.
68
69
     * Made the stack trace printed by `Throwable` much cleaner so that it
       takes up less screen space and is formatted a bit better.
70
71
72
73
74
75
76
   * `demo-hello`
     * Made the system properties array `final`.
   * `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
   * `meep-midlet`
     * Implement `MIDlet.checkPermission()`.
79
   * `meep-rms`
80
     * Added basic support for record stores.
81
   * `meep-swm`
82
83
84
     * Added proprietary `ExtendedTaskManager` interface which can be used
       to specify arguments, system properties, and console output alternatives
       to launched tasks.
85
   * `midp-lcdui`
86
     * Added a 12 strike font.
87
     * Added capability flag for pointer events.
88
89
90
     * 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.
91
     * Adjusted the style of the lowercase A character in the sans-serif font.
92
93
     * Changed 16 strike font to be the large size font and made the 12 strike
       font the medium size font.
94
95
96
     * 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.
97
98
99
100
     * 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.
101
     * Fully drawn default fonts.
102
103
     * Made all the graphics operations not throw a `TODO`, instead they will
       just draw a placeholder graphic.
104
     * Moved the graphics drawing operations to another class.
105
     * Removed the 24 strike font, it was too large.
106
     * Update the `Display` when a command is added or removed.
107
108
109
     * 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.
110
111
112
     * 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
113
114
115
116
117
118
119
   * `tac`
     * Override standard output and forward to standard error while a test is
       running, so things are not kludged.
   * `tac-runner`
     * Allow specific tests to be ran via the main arguments.
     * Generate JUnit output which can be used in test environments.
     * Performed some refactoring on the deserialization/serialization code.
120
   * `tool-classfile`
121
     * Corrected parsing of the stack map table.
122
     * Removed `net.multiphasicapps.classfile.ExecutableCode`, it was not used.
123
124
125
   * `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.
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
126
127
 * Compiler Backend
   * Added a bunch of string representations for class structures.
128
129
130
   * 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
131
132
133
134
135
136
 * 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
137
     * Added string representation for the stack map table.
138
139
     * Add ability to start tasks with command line arguments, system
       properties, and alternative console redirection (to capture output).
140
141
     * 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
142
   * SpringCoat
143
     * Add limit to stack frame depth.
144
145
     * Add support for system properties being based to virtual machine
       instances.
146
147
     * Profiler thread lists are easier to read because the main suite is
       listed instead of the VM identifier.
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
148
149
150
   * SummerCoat
     * New Virtual Machine, register based.
     * Vast improvements over SpringCoat, faster and slimmer.
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
151
152
153
   * RatufaCoat
     * New Virtual Machine, based off SummerCoat.
     * Fast and slim, written in C.
Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
154
155
 * Cleanup
   * Removed the `test.sh` script, it was empty.
156

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
157
158
159
# 0.2.0 (December 25, 2018)

SquirrelJME's first release!
160

Stephanie Gawroriski's avatar
Stephanie Gawroriski committed
161
162
163
164
165
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.