SquirrelJME follows a goal-oriented release plan rather than one of fixed dates. This is to reduce stress and not put hard time limits but more of an action-oriented plan to meet when it is time for releases.
Until all the goals are met (or otherwise pushed back or dropped if needed) the lowest version number will remain at zero. Otherwise, when the goals are met the Release Candidate process will start.
To reduce the possibility of releases failing due to issues, there will be a release candidate as a kind of test to ensure that the release process works and that SquirrelJME actually functions. There will be as many release candidates as needed for the fixing of issues, however once the release is determined to be stable enough it will then become an actual release and get an even numbered release version.
Effectively in short, these act as the major milestones that must be met before a release is even possible.
Please note that this information may change over time and is just speculation based on project planning.
0.2.0 (December 25, 2018)
This is the first version of SquirrelJME.
This release was before the goal-oriented release planning.
- Virtual Machine: SpringCoat
- Pure interpreter which runs on existing JVMs.
0.4.0 (2026 TBD)
As of 2026/06/28: 206 of 317 (64%)
[| 0%...|10%...|20%...|30%...|40%...|50%...|60%...|70%...|80%...|90%...|]
[|||||||||||||||||||||||||||||||||||||||||||||..........................]
- [ ] General Project
- [ ] Documentation
- [X] No-AI Policy
- [X] Building Instructions
- [X] Documentation Refactors
- [ ] Finalize all TODOs
- [X] Supply Chain
- [X] Root Build
- [X] Install4J Installers
- [X] Release Process
- [X] Natives Building
- [X] Source Archives
- [X] Standalone Bundling
- [ ] Documentation
- [ ] Runtime Library
- [ ] Building
- [X] Fonts
- [X] Convert BDF to SQF
- [X] Place SQFs as a resource
- [ ] Improved Pipeline Build using CMake
- [X] Ability to build everything
- [ ] Emit warnings for missing release required targets
- [X] Upload everything to Fossil
- [X] Migration to Gradle
- [X] NanoTest Support
- [X] Old script cleanup
- [X] Release optimization/stripping/compaction
- [X] Annotations for disabling for exported APIs
- [X] "ROM"-ization of the Jar
- [X] Standalone "Emulator"
- [X] Release and Debug Support
- [X] JDWP Debugger Support
- [X] Standard
javacommand line support - [X] VMs
- [X] Hosted
- [X] SpringCoat
- [X] NanoCoat
- [X] TAC Integration
- [X] ProGuard Optimization
- [X]
@SquirrelJMEVendorAPIand@KeepWhenCompactingremoval.
- [ ] Implementation
- [X] Collections
- [X] Compact Stack Traces
- [X] Corrected MIDI Timings
- [X] Encodings
- [X] ASCII
- [X] ISO-8859-1
- [X] ISO-8859-15
- [X] Shift-JIS
- [X] UTF-8
- [ ] DoJa
- [X] Application Detection
- [ ] Dialogs
- [X] MIDP 3 Introversion
- [X] MLD Playback Support
- [X] Most
Canvasbased applications are supported - [X] ScratchPad Support
- [X] Version Checking (Compatibility)
- [X] Fonts
- [X] 12 Strike Font
- [X] 16 Strike Font
- [X] Japanese Font (Misaki)
- [X] Unifont 16 Fallback Font
- [ ] GCF
- [X] HTTP Support
- [ ] Inter-MIDlet Communication
- [ ] Files
- [X] Pseudo Endpoints
- [ ] Real Files
- [ ] TCP/IP
- [ ] UDP/IP
- [ ] Image Reading Support
- [ ] GIF
- [X] PNG
- [X] XPM
- [X]
java.lang - [X] Boxed Types
- [X]
toString()corrections
- [X]
- [X] Fixes to
Object.clone() - [X] Fixes to
Object.equals() - [X]
System.getProperty()- [X] Java SE Specific Properties
- [X] Java ME Specific Properties
- [X] Traditional Java SE-style
Class.getResourceAsStream()Fallback - [X]
java.io - [X]
DataInputStream - [X]
DataOutputStream - [X]
java.util - [X] Hash based collection improvements
- [X] Vector (Deprecated)
- [X] KJX Support
- [X] Launcher
- [X] Auto-launch via system property
- [X] Major improvements to the splash screen
- [X] Show that an application is loading when it is selected
- [X] System Information Application
- [ ] LCDUI Refactoring and Improvements
- [ ] Alerts
- [ ] All
Displayables using ScritchUI - [X] Commands (Mostly)
- [X] Double Buffering
- [X] Generalized input support
- [X] Menus (Mostly)
- [X] MLE Implementation
- [ ] Improve and Refactor
Text - [X]
setCurrent()Improvements - [ ] Show images in Lists
- [X] Media API
- [X] Abstract Player
- [X] MIDI File Playback
- [X] MIDI Control Support
- [X] Null Player
- [X] Volume Control Support
- [X] MEEP
- [X] Improved Task Management
- [X] Permission Checking
- [X] Support for Broken Java Manifests
- [X] Version Checking (Compatibility)
- [X] Modern "Mid-Level" API implementations (MLE)
- [X] Atomics
- [X] Classpath and Library Access
- [X] Debugging
- [X] Generic Pipes
- [X] Java Arrays
- [X] Java Classes/Types
- [X] Java References
- [X] Java Objects
- [X] Local Bucket File Storage
- [X] Math Acceleration
- [X] Native Archive Acceleration
- [ ] Network TCP/UDP Pipe
- [ ] ScritchUI
- [ ] All Widgets Supported
- [X] ScritchPencil
- [X] Base Interfaces
- [ ] ScritchAudio
- [ ] Improved MIDI Interfaces
- [ ] Sinks/Readers (Microphone)
- [X] Sources/Renderers
- [X] Tasks
- [X] Threading
- [X] Merged Thread Types
- [ ] Native optimizations
- [X] Array operations
- [ ]
double - [ ]
float - [ ]
long - [X] String operations
- [X] Nokia
- [X]
FullCanvas - [X] Record Store Support
- [X] Testing-Acceptance-Correctness
- [X] Inherited test results
- [X] Integration into Gradle
- [X] Runnable on target VM
- [ ] Software Math Implementations
- [ ]
double- [ ] Base
- [ ] Conversions
- [ ]
float- [ ] Base
- [ ] Conversions
- [ ]
long- [X] Base
- [ ] Conversions
- [X] Sorting algorithm
- [X] ZIP Files
- [X] Block based
- [X] Read
- [X] Write
- [X] Stream based
- [X] Read
- [X] Write
- [ ] Building
- [X] SpringCoat
- [X] Building
- [X] TAC Support
- [X] Implementation
- [X] Corrected Static Method Inheritance
- [X] JDWP Debugging Support
- [X] Limit depth of the call-stack
- [X] Major Refactoring
- [X] Major Simplification
- [X] Merged Thread Types
- [X] Modern "Mid-Level" API implementations (MLE)
- [X] NPS Profiling Support
- [X] Pseudo-proxy layer for future MLE APIs
- [X] Runtime implementation improvements
- [X] Speed improvements
- [X] Virtual Machine Fixes
- [X] Building
- [ ] NanoCoat
- [ ] Building
- [X] CMake
- [X] GCC (Done Last)
- [X] TAC Support
- [ ] Visual C 6 (Done Last)
- [ ] Frontends
- [ ] Allegro 4
- [ ] Standard JNI/JVM (libjvm)
- [ ] Compatible JNI implementation
- [ ] Self-written
jni.h- [ ] All Functions
- [X] Basic Structure
- [ ] Self-written
jvm.h- [ ] All Functions
- [X] Basic Structure
- [X] Standalone Application
- [X] Standard
javacommand line support - [ ] RetroArch (libretro)
- [ ] SDL 1
- [ ] SDL 2
- [ ] SDL 3
- [ ] Implementation
- [X] Atomics
- [X] Byte code execution
- [X] Byte code processing
- [ ] CBOR
- [X] Character Sequences
- [X] Class Loading
- [X] Closeable
- [X] Compact Stack Traces
- [X] Debug Output
- [X] Dynamic Library Loading
- [X] Error Handling
- [X] Fixed Point Math
- [ ] Garbage Collection and Reference Correctness (Very Huge)
- [ ] Check if memory is allocated by SquirrelJME
- [X] Best Guess Heuristic
- [ ] POSIX
sigaction()/sigsetjmp()viaSIGSEGV/SIGBUS - [ ] Windows
- [X] Simple Heuristic Check (No Memory Remains)
- [ ] Tests for every instruction
- [X] Generic Bit Operations (Cross-Platform)
- [X] Inflate Algorithm
- [ ] JDWP Debugging Support
- [X] Lists
- [X] Main Virtual Machine Loop
- [X] Memory Allocation
- [X] Modern "Mid-Level" API implementations (MLE)
- [X] Multi-threading
- [X] Native File Support
- [X] Native Path Support
- [X] NanoTest Support
- [ ] NPS Profiling Support
- [X] Reference Counting
- [X] Seekables
- [ ] Snapshots (Save States)
- [ ] Entire State Dumping
- [ ] All Definitions
- [ ] Debug Dumping
- [X] Walking
- [ ] Entire State Reload
- [ ] Data Re-integration
- [ ] Pointer Re-integration
- [X] StackMap Support
- [X] Streams
- [X] Bit
- [X] Byte
- [X] TAC Support
- [X] Tasks
- [ ] TCP/IP
- [X] POSIX
- [ ] Win32
- [X] Tree Traversal
- [X] VM Threads
- [X] ZIP File Support
- [ ] ScritchAudio
- [ ] Implementation
- [ ] MIDI Support
- [ ] Sinks/Readers (Microphones)
- [X] Software Mixing
- [X] Source/Renderer Streams
- [ ] Frontends
- [ ] Audio Toolbox (macOS)
- [ ] Allegro 4
- [X] Open Sound System
- [ ] OpenAL
- [ ] SDL 1
- [ ] SDL 2
- [ ] SDL 3
- [X] WinMM
- [ ] ScritchUI
- [ ] Implementation
- [X] Fully synchronized graphics, for compatibility
- [ ] Fonts
- [X] Fallback Font
- [X] Dynamic Font Scaling
- [ ] Resource-Based Loading
- [ ] Support fallback glyphs into other fonts (logical fonts)
- [X] Generic raster operations
- [X] HiDPI Support
- [ ] Frontends
- [ ] Allegro 4
- [ ] Cocoa (macOS/NeXT)
- [X] GTK2
- [ ] Improvised Framebuffer Fallback Adaptation
- [ ] Buttons (Selectable/Clickable)
- [ ] Labels
- [ ] Lists
- [X] Basic rendering
- [ ] Fonts
- [ ] Images
- [ ] Text Boxes
- [ ] ABC Mode Input (2=A, 22=B, 222=C)
- [ ] Keyboard Input
- [ ] Fallback Panel Implementation
- [ ] Fallback Window and Screen Implementation
- [X] Win32
- [ ] SDL 1
- [ ] SDL 2
- [ ] SDL 3
- [ ] X11 (Pure No-Library Implementation)
- [ ] Building
- [X] Unplanned/Extra
- [X] Additional Blending Modes
- [X] Generic Pixel Format Support
- [X] Generic Key Code Layer
- [X] Nokia OTA Support
- [X] Nokia Tone Support
- [X] Samsung API
- [X] WAVE Support
- [ ] Nice-To-Have (Not Included in Percent)
- [ ] Bluetooth Stubs
- [ ] Complete
CalendarImplementation - [ ] Compatibility System
- [ ] Ability to set flags
- [X] Compatibility Flags
- [ ] Harmonize all
XXnnto__error__(id) - [X]
javapequivalent - [ ]
javapequivalent (ABCD) - [ ] Linter/Formatter
- [ ] Modem Stubs
- [X] Move
debug-jdwp-vm-hosttoemulators/ - [X] SquirrelJME applications under
system-app-*- [X]
launcher - [X]
lcdui-demo
- [X]
- [ ] SquirrelJME support libraries under
vendor-api-squirreljme-*- [X]
collections - [X]
csv - [X]
io - [ ]
io-file - [ ]
scritchui - [ ]
tac - [X]
zip
- [X]
- [X]
unzipequivalent
0.6.0 (TBD)
- [ ] TBD
- [ ] Runtime Library
- [ ] Building
- [ ] Modern SDK for Modern Java ME Development
- [ ] Implementation
- [ ] Complete
CalendarImplementation - [ ] DoJa
- [ ] Additional MLD Event Type Support
- [ ] Images
- [ ] BMP
- [ ] JPEG
- [ ] Complete
- [ ] Building
- [ ] SpringCoat
- [ ] Implementation
- [ ] NanoCoat
- [ ] Building
- [ ] Modern SDK for Modern Java ME Development
- [ ] Implementation
- [ ] ScritchAudio
- [ ] Implementation
- [ ] Frontends
- [ ] ScritchUI
- [ ] Implementation
- [ ] Frontends
- [ ] Improvised Framebuffer Fallback Adaptation
- [ ] Text Boxes
- [ ] T9 Text Input (Dial-Pad)
- [ ] Building
- [ ] Nice-To-Have
- [ ] Missed from 0.4.0
- [ ] TBD
- [ ] Missed from 0.4.0
- [X] Unplanned/Extra
0.8.0, 0.10.0, 0.12.0, 0.14.0, etc. (TBD)
These versions are too far in the future for any realistic planning.
- [ ] TBD
- [ ] Runtime Library
- [ ] Building
- [ ] Implementation
- [ ] AWT on ScritchUI
- [ ] Java Applet Support
- [ ] Launcher detection/integration
- [ ] Detect applets in HTML
- [ ] Independent Applet Viewer
- [ ] OpenGL ES
- [ ] NanoCoat
- [ ] Building
- [ ] Frontends
- [ ] Netscape Plugin API for Applets
- [ ] Implementation
- [ ] ScritchAudio
- [ ] Implementation
- [ ] Frontends
- [ ] ScritchUI
- [ ] Implementation
- [ ] OpenGL ES
- [ ] Frontends
- [ ] OpenGL ES
- [ ] Nice-To-Have
- [X] Unplanned/Extra
1.0.0 (TBD)
This version is too far in the future for any realistic planning.
- [ ] 90% of all APIs implemented
1.2.0 (TBD)
This version is too far in the future for any realistic planning.
- [ ] 99% of all APIs implemented