Releases: processing/processing4
Processing 4.0 alpha 6
Revision 1275 – 10 July 2021
Code completion is back!
Added a new Movie Maker that creates MP4s and Animated GIFs!
And a new color scheme sure to bring out the cranks!
New Features
- Movie Maker has been rewritten and much improved! It can now directly create high quality MPEG-4 videos and Animated GIFs. Due to Apple removing support for most video codecs after macOS Mojave, we could no longer export QuickTime videos. The new Tool uses FFmpeg behind the scenes. The Tool also supports Apple ProRes 4444, which is very high quality, and incidentally, the format that Apple's “QTMovieModernizer” formerly used to re-encode “legacy” video formats. #6110
Design and Themes
-
We've started work on refreshing the design. This round has a new set of colors. If you like them, great! If not, please hold your complaints. The internet doesn't need more negativity! We know some people won't like it, and we're still working on it. We think you'll be happy with the final version—we have some exciting updates that we aren't yet ready to share, and it will all make more sense as the system comes together. #48
-
In the meantime, if you'd like to customize the colors, instructions are here.
-
The "4" icon and the current "About" screen are only placeholders. I was tired of looking at the 3.x design, and also needed to be able to tell the versions apart from one another. It's also necessary to start the replacement process: figuring out what things need to be updated when we incorporate the real versions.
-
All that said, major work underway for improvements to how the visual theme is handled. We hope to ship with a dark mode option as well. Stay tuned!
-
The splash screen handler has been rewritten because the Windows version in launch4j was too brittle. The downside is that it's a fraction of a second slower to show up, but the upside is that hi-res Linux and Windows displays get a nice 2x version instead of the crunchy low-fi (not in a good way) version.
-
Add
ui.font.family
andui.font.size
as preferences. -
Added support for
0x
numbers to support alpha colors intheme.txt
.
Bug Fixes
-
mouseButton
was not set correctly onmouseReleased()
with Java2D. #181 -
A more useful message for the
NoClassDefError: processing/core/PApplet
startup error on Windows was in the alpha 5 source, but may not have made it into the actual release. #154 -
Fix
Module javafx.base not found
on Linux. Thanks letorbi. #214, #215 -
After selecting a font other than Source Code Pro, font went to a default. #216
-
unregisterMethod()
was broken. #223 -
Fixed "No library found for org.w3c.dom" message when using that (built-in) package.
Changes
- When changing to an incompatible Mode, just open a new window instead of giving the user a potentially confusing error message about it. #189
API Changes
None of these should break anything, but if they do, please let us know!
-
Editor.applyPreferences()
wasprotected
, now it'spublic
. -
Removed
Editor.repaintErrorBar()
andEditor.showConsole()
because they didn't appear to be in use. Holler if this breaks anything. -
Renamed
TextAreaPainter.getCompositionTextpainter()
togetCompositionTextPainter()
.
Internal Changes
-
Removed
java.class.path
when launching code from inside the PDE. This should prevent conflicts, and avoid introducing problems when using Export to Application. -
Removed compound key actions (which were undocumented and not in use). This clears up a lot of complexity in
DefaultInputHandler
. -
Remove
jdt.compiler.jar
from subprojects. -
Cleaned up lots of dead/unused parts of
javafx/build.xml
. -
Move
ISSUE_TEMPLATE
to the.github
subfolder. -
Removed extra files from Tools folders for the download.
Processing 4.0 alpha 5
Revision 1274 – 24 June 2021
Sneaking a release out the door the morning before while on a break from our company meeting. Don't tell my boss, he's kind of a jerk.
Known Bugs
-
Code completion is currently broken. Any updates will be posted here.
-
Plenty of other issues being tracked in the Processing 4 and Processing 3 repositories. Please help!
Updates and Additions
-
Added a few more “entitlements” to the macOS release that may help with using the Video and Sound libraries, especially on Big Sur.
-
Moved from the 11.0.2 LTS version of JavaFX to the in-progress version 16. This fixes a garbled text issue that was breaking Tools that used JavaFX.
-
JavaFX has been moved out of core and into a separate library. After Java 8, it's no longer part of the JDK, so it requires additional files that were formerly included by default. The Processing version of that library comes in at 180 MB, which seems excessive to include with every project, regardless of whether it's used. (And that's not including the full Webkit implementation, which adds ~80 MB per platform.)
-
JavaFX is back and working again! This also fixes some Tools that relied on it, and Export to Application should be working as well. #110, #112, #3288, #209, #210
Other Fixes and Changes
-
Major font cleanup inside Preferences. It appears that the “Monospace” font may be missing or broken with OpenJDK 11. Does it show a random sans serif for you? Let us know if it does. But aside from that, the Editor and Console font should be behaving a little more reliably.
-
The Windows splash screen should no longer be tiny. Still sorting out some hidpi issues on Windows, but this one might make things a bit less quirky. #4896, #145
-
Better handling of
NoClassDefError: processing/core/PApplet
on startup with Windows 10. #154 -
No longer using
JFileChooser
on macOS; it's too awful. This means a Copy/Paste issue comes back, but the cure was worse than the disease. #1035, #77
Internal Changes
-
The minimum system version for macOS (for the PDE and exported applications) is now set to 10.14.6 (the last update of Mojave). 10.13 (High Sierra) is no longer supported by Apple as of September or December 2020 (depending on what you read), and for our sanity, we're dropping it as well.
-
Updated JNA from 5.7.0 to 5.8.0.
-
Remove the ant binary from the repo, updated the version we're using from 1.8.2 to 1.10.10.
-
Rebuilt the
appbundler
tool for macOS to handle some recent changes, and disabled some logging chatter as well. -
Update to launch4j 3.14, fixing Export to Application on Windows.
Processing 4.0 alpha 4
Revision 1273 - 15 June 2021
Happy birthday to my goddaughter Kelsey! Let's celebrate with another alpha release.
This should be a bit more stable than the last round. I've rolled back some of the more aggressive anti-AWT changes (bad for longevity, good for compatibility) so images in particular are now behaving better.
But enough of that, let's go to the phone lines:
What bugs have been fixed; why should I care?
-
Sketch window location is saved once again: re-running a sketch will open the window in the same location. This was broken for a while! #158, #5843, #5781
-
When using multiple monitors, new Editor windows will open on the same display as the most recently opened Editor window. #205, formerly #1566
-
A major Undo fix, this may even be the big one, but it's not confirmed. (Please help confirm!) #175
Were you too hasty with exorcising AWT?
-
cursor(PImage)
broken everywhere becausePImage.getNative()
returnsnull
#180 -
PImage.resize()
not working properly. #200 -
copy()
not working correctly. #169
Did you find any particularly niggling, but small issues?
-
Catch
NoClassDefError
inPlatform.deleteFile()
(still unclear of its cause) on Big Sur. #159, #6185 -
Fixed
Exception in thread "Contribution Uninstaller" NullPointerException
when removing an installed contribution. #174 -
If the default display is selected in the Preferences window, store that, rather than its number. It was discovered that plugging in a second display could bump the “default” display to number 2, even while it was still selected. Yay!
-
Sort out calling
unregisterMethod()
fordispose
fromdispose()
makes for bad state situation. #199
How about contributions from the community?
-
Some exciting things are on the way for the documentation and web site. #191
-
Tweak the circle for number of updates based on Akarshit's initial attempt. #201, #4097
-
Make
parseJSONObject()
andparseJSONArray()
returnnull
when parsing fails. #165, #166
Is there anything new?
- Added
PVector.setHeading()
for parity with p5.js. #193
- The default font (what you get if
textFont()
isnot used) has been changed to Source Sans instead of Lucida Sans. I just couldn't take Lucida any longer.
Were there any internal changes I probably won't notice?
-
Updated to JDK 11.0.11+9
-
Update from JNA 5.2.0 to 5.7.0
-
Modernize the RegisteredMethods code to use collections classes w/ concurrency. #199
-
Set closed issues to automatically lock after they've been closed for 30 days. (This has no effect on open issues, only closed ones.) Actually this one you may have noticed if you had a lot of notifications turned on.
-
Slowly transitioning some of the older code to newer syntax (lambda functions, etc). This is not a priority for anyone else: it's being done slowly, and as a chance to do code review on some very old work.
-
Fix
textMode(SHAPE) is not supported by this renderer
message with SVG Export. #202, #6169
Processing 4.0 alpha 3
Revision 1272 - 17 January 2021
Happy Martin Luther King Day! (Or MLK Day Eve, if you're reading this on Sunday.)
Several bug fixes and updates in this release, the most significant being video capture on macOS should be working again, and several OpenGL fixes that come with an updated release of JOGL. (Thanks to Sven Göthel, who continues working on it after many years.)
Update - 18 January 2021 - The app was broken on Windows because of the… splash screen. The download link has been updated with a new zip that fixes the issue, or if you've already downloaded alpha 3, you can download the attached processing.exe
and replace just that file.
Known Issues
- The ugly
surface.setResizable()
workaround in the previous release is now properly fixed. 124 - Haven't had a chance to test much with macOS running on M1 machines. Chances are this should run in Rosetta mode, but I've not had time to find out.
Fixes and Updates
- Video was broken on macOS because of Apple's security changes.
- Audio was also broken on macOS because of Apple security changes.
- Fix
NullPointerException
ingetSystemZoom()
on startup in alpha 2. 143 loadJSONObject()
andloadJSONArray()
now returnnull
if the given file was not found (in line with otherloadXxxx()
APIs. 6081- Update the splash screen to say 2021 before the pedants can hunt me down.
- Contribution translation updates (thank you!)
- Remove zero width no-break space
U+FEFF
character withtrim()
. PShapeOpenGL.setAttrib()
warning referencedsetNormal()
instead ofsetAttrib()
. 141- Add
var
keyword to highlighting 114 - Fix revision number in exported code 135
And More from Sam
- Fix preprocessor spaces in the
size()
command to follow our guidelines. 136, 138 - Move
PdePreprocessIssueException
to the test package. 130, 139 - Fix regression where
smooth(4)
was showing the “smooth() can only be used inside settings()” error. 149, 152
Internal Additions
- You can now create a “source”
.jar
file by typingant source-jar
inside thecore
directory. 118 - Update Batik from 1.8 to 1.13 inside SVG Export library. Fixes incompatibilities with Java 11.
- Automate macOS notarization in the build process (done in 4.0a2) 24
- Show Tool incompatibilities with a message dialog, and clean up a little of the internal error handling.
- Prevent “illegal line” message when loading library with
0xFEFF
chars in a.properties
file - Fixes to
Platform
code- Get rid of
editor.laf.vaqua
preference (use theeditor.laf
preference instead) - Move macOS-specific code out of
DefaultPlatform
and intoMacPlatform
- Get rid of
- Clean up “Export to Application”
- Turned off 32-bit and ARM exports (no longer supported)
- Drop '64' from the folder name (everything 64-bit from now on)
- Remove “big fat lie“ error spew on export
- Too many
.dll
and.jar
files were included - Updates and text changes to be a little clearer
- Fixed links for Java 11
- Set minimum version on Windows, fix JDK download URL
Processing 4.0 alpha 2
Revision 1271 - 15 September 2020
Several fixes for this round, plus working on the guts quite a bit to prepare for newer/faster/better rendering methods.
The minimum system version for macOS (for the PDE and exported applications) is now set to 10.13.6 (the last update of High Sierra). Apple will likely be dropping support for High Sierra in late 2020, so we may make Mojave (10.14) the minimum by the time Processing 4.x ships.
Known Issues
- If you're using P2D or P3D on macOS, and have
surface.setResizable(true)
insidesetup()
, you'll need to (temporarily) move that intodraw()
. We had to do an ugly hack at release time due to issue 124. The ugly hack also involves the window flickering once when it first opens in this situation. We should have that fixed for the next release.
Bug Fixes
- Break
buildMenu()
intopopulateMenu()
method to delay Debugger init 73 - Fix broken macOS build 83
- Bump JDK to 11.0.8, then rolled back to JDK 11.0.6 again 121, 123
- Make macOS notarization part of the build process 24
NullPointerException
inContributionManager.updateFlagged()
on startup. Now checks for directorymodes
andtools
directories and read/write access on startup 6034- PDF was broken on
getImage()
call 62, commit
Changes for AWT
To make way for more advanced rendering options, the exorcism of AWT from the base classes inside core has begun. More about that here: https://github.com/processing/processing4/wiki/Exorcising-AWT
- Remove all usage of AWT from
PApplet
55 - Make edits to core so that AWT can be disabled and LWJGL can run commit
- Add
--disable-awt
option toPApplet.main()
- Fix for precision issues with PDF 5801
- Implement
displayDensity(int)
, it's been returning the main display's value - Show “displays have separate spaces” warning message when the param is unset
- Show it in the console, which allows us to get rid of
JOptionPane
- Catalina seems to have it un-set, but the default is the same
- Show it in the console, which allows us to get rid of
- Move
selectInput/Output/Folder
toShimAWT
class - remove the
java.awt.Frame
object fromPApplet
- Move
loadImage()
intoShimAWT
desktopFile()
anddesktopPath()
methods are supported, unless we find they're trouble- Move
ShimAWT.loadImage()
to thePSurface
subclasses - Move all
java.awt
andjavax.imageio
out ofPImage
- Make the switch to
getModifiersEx()
instead ofgetModifiers()
4 - Fix
PImage.save()
breakage due to AWT changes above (saving to PNG was broken in anything but the default renderer) 80
Sam was at it again
- Zoom dialog fonts based on user scale setting 111, 125
- Resolve rewrite of pixelDensity to settings in preproc 58, 60
- Resolve PDF renderer parse issue in preproc 66, 68
- Bump JOGL 2.4 to the new release candidate (20200307) 85
- Remove debugging printout from Open Recent 78, 79
- Fix broken tests 92, 93
- Refactor out preproc.issue 96
- Debug button in the toolbar is currently broken 94, 95
- Fix
WARNING: Illegal reflective access by processing.opengl.PSurfaceJOGL” on getContextCapabilities()
50, 76 - Migrate JSSC to sampottinger/jssc 71, 75
- Rewrite size call for all renderers 90, 91
- Switch to JFileChooser on Mac with VAqua 88
- Cut/Copy/Paste while saving a sketch on macOS was going to the editor, not the save dialog 77
- Implement the basics of Dark Mode for the Mac 89
color
as return type was broken 104, 105- Automated (jenkins) build broken because ant 1.10.7 download no longer available 106, 107
- Processing IDE interface too small on high-res Windows displays 102
- Ensure not trying to use Toolkit zoom before ready 103
Other Contributed Changes
- Remove some redundant boxing and casting 51
Processing 4.0 alpha 1
Revision 1270 - 18 January 2019
This is a massive update! With the help of Sam Pottinger, we're working to get Processing to run with Java 11. This will give us a more stable platform for the next few years.
In the process, there are also significant updates which include updated Java syntax support and lots of other long-awaited features.
We've started a Changes in 4.0 document to keep track of all the details.
We recommend using a different sketchbook location for 4.0, to avoid confusion with things that might be incompatible with your 3.0 work.
Sam Did a Lot of Work
- This massive pull request has the changes that got things kicked off. It closes several issues and pull requests, including 5750, 5753, 4415, and others.
- ANTLR has been updated from version 2 to version 4. The grammar has been updated for Java 8 and a new pre-processor created. 3054 and 3055
- Support for Travis CI has been added. 2747
- The macOS integration layer has been updated for Java 11. 5747
- Nested generics now work properly. 4514
- Several fixes for the build process. 12, 6
- Update to JNA 5, and migrate code
Native.load()
calls. 7, 15 - Fix console font spacing. 19, 20
- Implement
import static
. 18, 5577 - Fixing problems with Windows UI scaling. 21, 30
- Fix display density detection and use
GraphicsConfiguration
. 32, 35, 34 - Fix
WARNING: Illegal reflective access by processing.app.ui.Toolkit to field sun.awt.CGraphicsDevice.scale
warning on startup. - Replace macOS-specific fullscreen option for
setResizable()
. 36 - Several tests have been added, and are called by default during
ant dist
. 38, 8 - Update from Java 11.0.2 to 11.0.5, and eventually 11.0.6. 40, 39
- Fix Java 11 incompatibilities inside
PSurfaceFX
. 5286 - Fixed
Table
's use of deprecatedisAccessible()
. 33, 3
Other Contributed Fixes
- Disable FBO when using Intel HD 3000 Graphics. 4104, 5881
rotateZ()
was breaking inPShapeOpenGL
. 28, 41
Cross-ported from 3.5.4
- This release includes all updates found in Processing 3.5.4