Processing Changelog

What's new in Processing 4.3

Aug 12, 2023
  • Update documentation and process for updating language files for localization 722
  • Inherit dark mode from system settings on macOS 699
  • Use calculated text height instead of OS ascent for better vertical centering. Note: this may cause some sketches to look slightly different if textAlign(..., CENTER) is being used. 739
  • Bumped Java to 17.0.8+7.
  • Fix NullPointerException when background() exceeds color range when writing PDF 740

New in Processing 4.2 (Feb 21, 2023)

  • Impress your friends with new pde// protocol handlers! With Processing 4.2, you can link to .pdex and .pdez files to immediately run and install libraries and sketches. How it works
  • Linking to pde//processing.org/somesketch.pdez in the browser will download somesketch.pdez and load it into the editor. It also works for files, for instance pde///Users/ada/Desktop/somesketch.pdez will open an archive found on the Desktop.
  • This also works for contributions (Libraries, Modes, Tools) archived as .pdex files.
  • Both file types are simply a renamed .zip file. So to create sketches in .pdez format, use Tools ? Archive Sketch, and replace the .zip with .pdez.
  • This is implemented for macOS and Windows (#559), based on this article which appears to be from @pboucher. Thank you! We still need help with implementing and testing it on Linux (#674). We would also like to add a warning dialog when opening files this way (#560).
  • In addition to the protocol handlers, there are a number of fixes in this release, especially for Windows users (and soon, for Python users).
  • Windows users, we still love you
  • The .pde, .pdex, and .pdez icons now work on Windows!
  • Exporting projects to Windows resulted in “cannot find Java” errors, now fixed. #667
  • Snake people, we love you too
  • Several internal changes have been made to better support future releases of Python Mode. Fingers crossed that we'll be able to launch some of this soon.
  • And still we fix the bugs
  • Fix encoding problem in “has been resized from 100?100 to 116?100 by the window manager” messages when using OpenGL.
  • fullScreen(P2D) not using the full screen when Windows display is scaled to fractional sizes. #514.
  • Table.getString() raises stack overflow when column type set to double. #671
  • Added support chained decimals during SVG Parsing (contribution from @bsapozhnikov) #515, #659
  • Applications were being exported to the wrong folder. #601
  • Fixed more /tmp folder problems on Linux. #666

New in Processing 4.1.3 (Feb 10, 2023)

  • bug fixin':
  • Lots of work on the Contributions Manager to deal with concurrency issues (and myriad problems revealed in the process). #640
  • Preferences were not saved when closing Processing under certain circumstances. #608
  • community contributin':
  • Fix typos in French translation. #661
  • Improved documentation for lerpColor() function. #655
  • house cleanin':
  • Warn users about multiple libraries with the same name.
  • Tool tips for errors and warnings not picking up correct colors from the theme. Also made fixes for the margins and border of the popup.
  • Many more updates to the contribs wiki
  • internal changin':
  • Update to JDK 17.0.6+10 from Adoptium
  • Set all build.xml files to use Java 17. Also fix several that still had tabs instead of spaces.
  • Add exports to the library parameters.
  • Fix inversion of handleSaveAs() (regression from earlier)

New in Processing 4.1.2 (Jan 17, 2023)

  • Contributions Manager:
  • The majority of the work for this release went into cleaning up and fixing the Contributions Manager. (What you see when importing Libraries, managing Modes, etc.) Please, please, please help us out and give it a lot of testing. This is old, messy, and important code that is easy to break in major ways. If you have trouble with it, please file an issue!
  • The “Manage Modes…” menu item was opening an empty window. #613
  • Fix Cannot invoke "javax.swing.JProgressBar.setVisible(boolean)" because "this.progressBar" is null error when using Update All. #618
  • Libraries from the Foundation (i.e. Video, Sound, and JavaFX) will now be reported properly on the stats page.
  • Updated the Wiki pages about Libraries, Modes, Tools, and Examples for Processing 4. These pages were copied over from the Processing 3 repository, but needed some cleaning. Still more work to do here, but it's a start.
  • Implemented per-line indicators for download/install status. Eventually these will replace the progress bar in the bottom panel.
  • Removed an old workaround for a NullPointerException while making selections. If it reappears, please file a new issue. #3667
  • @sampottinger saves us again:
  • “Cannot find a class or type named ‘PApplet’” error #626, #635
  • Cannot use @Override and @Deprecated in static mode #619, #622
  • color in imports shows up as an error in the editor (even though the code still runs) #521, #636
  • Sketch folders with spaces or hyphens showing errors in the editor window (even though the code still runs) #610, #637
  • Other Bug Fixes:
  • Help Menu sometimes disabled on macOS. This is a Java bug, but it's been closed as “cannot reproduce,” so I managed to find a workaround. #4353, #617, #638
  • Fixed ClassCastException with copy() and PGraphicsJava2D. #624
  • Additions? Why Not:
  • The shortcuts for Find Next and Find Previous (i.e. ctrl-G and ctrl-shift-G on Windows/Linux) now work inside the Find/Replace window.
  • Show a warning when calling clear() on the primary drawing surface. #627

New in Processing 4.1.1 (Nov 29, 2022)

  • This release adds initial support for Language Server Protocol, which means we will soon be able to integrate the compile/run process with other editors like Visual Studio Code. There is still a lot of work to be done here (this code is probably more “alpha” quality) but it's a good step forward. To use it, we'll first need an LSP “client,” which can be a community contribution so keep an eye out for that in the coming weeks and months. Thanks to @kgtkr for the LSP code here, it's a huge help. #117
  • Support has been added for extended language tags, which makes available a Traditional Chinese (zh_TW) translation in addition to the previously available Simplified Chinese translation (originally zh, now renamed to zh_CN). You can see the full list of supported language tags here. We will keep the existing two-digit tags in place for now, and update them as needed when new language translations are added. Read more on the Translations page on the Wiki. Thanks to @jsyeh for the zh_TW translation. #600
  • Since the redesign of Processing.org, the offline reference is too large to include the download. In this release, a “Download Offline Reference” item was added to the Help Menu, for people who need an offline copy. It creates a file called reference.zip in the sketchbook. If that file is present, then the Help menu links and Find in Reference will use that copy of the reference. If it is not present, online URLs will be used. You can also manually copy the reference.zip file from sketchbook to sketchbook. Put reference.zip in the root of your sketchbook and restart Processing so that it picks up the new file. For instance, in a class situation, you might put the file on a shared server and tell people where to find it. Read more on the Offline Reference page on the Wiki. #524, #213
  • Contributed fixes:
  • Size(863,863/2) inside setup() function (fix from @sampottinger) #602, #609
  • Pre-processor was inserting extra spaces (another from @sampottinger) #607, #609
  • Fix the JavaDoc for mousePressed variable from @SableRaf. #605
  • Other updates:
  • In some cases, the Theme was not being saved after Processing was restarted. #565
  • A few updates and clarifications in the size() reference.
  • The Java version has been bumped from 17.0.4 to 17.0.5.

New in Processing 4.0.2 (Nov 25, 2022)

  • the big ones:
  • OpenGL apps now work with macOS Ventura, once again thanks to @jaegonlee. #544
  • Library version number parsing wasn't ignoring comments properly, so libraries that followed the template closely were showing The version number for “…” is not a number. #586, #553
  • The Updates tab of the Contribution Manager was throwing error messages about this.progressBar. #567
  • fullScreen() with pixelDensity(2) was broken with the default renderer. On startup, the sketch would report Display -1 does not exist, returning 1 for displayDensity(-1). #487
  • JSSC update for M1/M2 from @sampottinger #525, #577
  • the li'l and medium ones:
  • After creating 26 sketches, the “take a break” message still showed up after restarting Processing. #582
  • With multiple users sharing a machine, Processing would not work properly for the second user due to a problem with the temporary directory. #549
  • Added explanation for how to fix Processing when a user disallows access to the Documents folder on macOS. #581
  • Fixed an infinite loop that could be caused by running out of options for a sketch naming scheme.
  • When calling random() on a list (now choice()) with no elements, it would throw a weird Exception. Now it throws a more descriptive exception.
  • need some help here:
  • Contributions from the community!
  • Loading SVG file was giving Illegal base64 character 20 encoding error. Fixed thanks to @jaegonlee and @vepo. #592, #599
  • Updated Catalan translation thanks to @trikaphundo. #550, #554
  • Updates to the Spanish translation, also from @trikaphundo! #552, #574
  • A couple fixes for the Ukranian language strings from @rzats. #585
  • @LesleyWagner fixed the vertical placement of top elements in the Manager window. #520, #539
  • Preprocessor fix from @sampottinger for function/variable "does not exist" errors reported when defining a class without setup() or draw(). #579, #597
  • steps forward:
  • Added a choice() method to the XxxxList classes, which returns a random value from the list. Similarly removeChoice() removes a random element from the list and returns the value.
  • Also added a choice() method that returns random integers. So int value = choice(10) is a shorthand way of saying int value = (int) random(10)
  • Removed the choice() (formerly random()) method from the XxxxList classes that took a PApplet object for its random number seed/generator. Just feels like overkill at this point.
  • internal changes:
  • Using more Java 17 syntax in the code. No plans to really scrub everything to change the syntax over, just a matter of cleaning things up as we go.
  • Fixed a potential casting problem with Platform and DefaultPlatform. Should have been unreachable, but fixed anyway.
  • Brought back getCodeIndex() for GUI Builder Tool… then removed it again. #545, #596
  • me talking on the wiki:
  • Added a Translations page to the 4.x wiki, which is update to the Localization page from the 3.x repository.
  • Posted an explanation of how to create a naming.json file so you can set up your own sketch naming schemes.

New in Processing 4.0.1 (Oct 4, 2022)

  • In the 4.0 release, switching to p5.js Mode caused an error message to pop up. Now fixed. #530
  • One minor addition: in the Preferences window, clicking the “More preferences can be found…” text will open the wiki page with more details about all these wonderful options.

New in Processing 3.5.4 (Jan 19, 2020)

  • changes:
  • Don't remove entries from Recent menu on Save As
  • Use ctrl-page up/down for changing tabs on Windows
  • Show error when .properties file is missing from a Library/Mode/Tool.
  • Fixes:
  • Tweak Mode working again (fix from Gal Sasson)
  • Fix potential highlighting issue that wasn't selecting portions of text
  • Names in the contribution listing are no longer case sensitive (It was placing lowercase names at the bottom of the list.)
  • Clean up a lot of bad temp file handling in the contrib manager
  • Fix NullPointerException in installPreviouslyFailed() on startup
  • Internal:
  • Ignore subfolders in the "libraries" directory. This was causing some nasty startup issues for folks, and other hard-to-track bugs. Hopefully there aren't any installs that relied on this behavior.
  • Update AppBundler to use newer SDK, recompile
  • Edit build.xml files and appbundler to preserve more attributes

New in Processing 3.5.3 (Feb 4, 2019)

  • Fixes:
  • "Redo" key shortcut for Windows screwed up
  • Https://github.com/processing/processing/issues/5773
  • Fix an editor problem with plain text (css, etc) files
  • Https://github.com/processing/processing/issues/5628
  • Default to using java.awt.Desktop methods for URLs/files when available
  • On Linux. Also cover a few weird cases that were failing silently.
  • Ignore .class files found in the META-INF folder for imported JARs
  • Https://github.com/processing/processing/issues/5778
  • Get rid of errant 'Could not parse -1 for display' message.
  • Fix up and clean a few file i/o issues that were causing resource
  • Leaks with loadXxxx() commands, and intermediate folders not being
  • Created for temporary files used by the saveXxxx() commands.
  • Additions:
  • Added reference for circle(), square(), push(), pop()

New in Processing 3.5.2 (Jan 23, 2019)

  • Fixed a pair of nasty regressions, and adding a couple key shortcuts
  • to the preferences file.

New in Processing 3.5.1 (Jan 21, 2019)

  • Should have known better than to try to fix a bug connnected to
  • something as fundamental as the size() command. This release just
  • fixes one major regression in 3.5.

New in Processing 3.5 (Jan 21, 2019)

  • API changes and additions:
  • Added circle() and square() methods.
  • Added push() and pop() for parity with p5.js
  • Non-US keyboards have trouble with a couple of shortcuts, so their implementation has been moved to the language files.
  • Make JSONObject.quote() (both versions) public
  • Change behavior of the remove() method in IntDict, FloatDict, etc. It now returns the value removed, for consistency with the other remove functions (and most usefulness). In some cases, was returning the index, which isn't as useful. If remove() is called on a value that does not exist, an runtime exception will be thrown because there's no sensible way to indicate that nothing was removed. This is also more consistent with removeIndex() throwing and exception when the specified index is not available.
  • Contributed fixes:
  • Extended SVG support for fonts and text
  • Updated Russian translation, now can choose Russian in preferences
  • Turkish translation updates
  • Examples dialog was causing high CPU load
  • Show a warning when a font isn't what the user expected
  • Add a button to hide the console
  • Fix NullPointerException in Contribution Manager when installing
  • Improvements to appdata.xml for Linux
  • Fix javaPlatform variable for newer JDK versions
  • Fix blend mode not being set correctly
  • Profile GL3bc is not available on X11GraphicsDevice
  • Jakub fixes:
  • Prevent "could not find sketch size" message from freezing the app
  • Prevent sketch exceptions from being hidden by a warning
  • Size(0, 0) just freezes instead of showing an error
  • Fix freeze when restarting sketch with variables in size
  • Make sure Ctrl+Left Mouse on MacOS is consistent
  • Stop frame rate counter from exaggerating
  • Fix vertex buffer initialized with wrong number of components
  • Recreate FBOs when offscreen PGraphicsOpenGL is resized
  • Andres with the updates:
  • Silence TIS/TSM warning message with P2D/P3D/OPENGL since macOS 10.13.4
  • Improve matrix performance in P2D/P3D
  • Initializing textures loads the pixels array, even if not needed aferwards
  • Improve startup time by skipping the Android SDK folder when listing sketches
  • PShape.attrib() and PShape.setAttrib() are not working
  • Still more bug fixes and improvements:
  • Improve startup time when user-specified fonts are not used. The default font will be faster, using ttf/otf is fine. Only load font list when createFont("The Font Name") is used, or PFont.list() is called.
  • "Sketch disappeared" infinite pop up dialogs
  • If settings() present but pixelDensity() is in setup(), no error message
  • Fix several out of date links in the Help menu
  • Update the About screen to 2019
  • Update to Java 8u192, then to 8u202

New in Processing 3.4 (Jul 27, 2018)

  • Show alternate error message on Windows when jnidispatch.dll or core.jar
  • have been removed by Windows Defender or Microsoft Security Essentials.
  • https://github.com/processing/processing/issues/5537
  • https://github.com/processing/processing/issues/4929
  • https://github.com/processing/processing/issues/5442
  • This has been a huge headache for us. We've repeatedly submitted the
  • software and asked Microsoft for help, but haven't had any luck.
  • If you run into this issue and would like to help, please submit the files
  • to Microsoft here: https://www.microsoft.com/en-us/wdsi/filesubmission
  • Perhaps if there are enough reports, they'll understand this is affecting
  • a lot of people.
  • New features:
  • It's now possible to make your own theme file for Processing. Copy the
  • theme.txt file from inside the Processing folder to your sketchbook
  • folder, and then edit away. For instance, to make a dark theme:
  • https://github.com/processing/processing/wiki/Dark-Theme-for-PDE
  • It's now possible to copy the text of the status bar. Click the clipboard
  • icon at the right-hand side to copy the text to the clipboard. To search
  • immediately, use shift-click.
  • The default search engine is Google, but you can modify that by altering
  • the 'search.format' line in preferences.txt
  • Added pyde as a supported extension, so double-clicking on Python sketches will launch the PDE.
  • Added Double and Long versions of the data classes. Not sure if we'll keep these, but we're trying them out.
  • Also add subset(long) and subset(double) to PApplet
  • Changed the internal Sort class to use int for comparisons for better accuracy, especially when working with double and long values.
  • Consistently implemented write(PrintWriter) in the List and Dict classes Added save(File) to the List and Dict classes
  • Prevent Table.sort() from throwing NullPointerException with empty cells
  • Updates:
  • Fixed up the Welcome dialog. When closing the window or hitting ESC,
  • the "show this" selection is recorded. Also clicking that text will
  • toggle the checkbox on/off, as users would expect.
  • https://github.com/processing/processing/issues/3911
  • https://github.com/processing/processing/issues/3912
  • Redesigned the Rename window to be less ugly. Now closes when ESC is pressed, and the default action is set so hitting Enter will work properly.
  • Rewrite exec() to do threads, also handle fast/excessive output cases
  • Rewrite requestImage() to fix errors/slowness/concurrency problems
  • Refactoring inside the completion code
  • Now using Java 8u181.
  • Change lack of blendMode() to a warning rather than an error in PDF
  • Updated the copyright and year in the launch and About screen.
  • A large number of changes and fixes for ARM submitted by Gottfried, who also posted 3.3.7.1 and 3.3.7.2 interim releases with some of these changes already present. Now we're back on track with 3.4.
  • Additional I/O improvements
  • Fix regressions in 3.3.7.1
  • OpenGL ES: Fix GLSL version number for 1.00
  • Add ADS1X15 Analog-to-Digital converter example
  • IO: pinMode() can now set pull-up and pull-down resistors on Raspbian
  • Several new examples
  • IO: New example sketch showing how to use a MPR121 capacitive touch sensor
  • fun tutorial by @msurguy forthcoming
  • IO: New example sketch showing how to use a BME280 environmental sensor
  • IO: New example sketch showing how to use a TSL2561 light sensor
  • IO: New example sketch showing how to use a PCA9685 Servo & PWM controller
  • IO: pinMode() got faster
  • IO: I2C now supports talking to slower devices, such as Arduino boards
  • Support for ARM Mali graphics was added to P2D/P3D
  • P3D now supports up to 4 lights on Pi using their OpenGL driver
  • Serial library now supports Raspbian's port naming (such as "/dev/serial0")
  • Enable exporting of Windows applications on ARM
  • Clarify SimpleInput example
  • Various ARM-related updates
  • Make P3D work on Linux SBCs using ARM Mali graphics and their ES 3.1 driver
  • Updates to Japanese translation
  • Added Russian translation
  • Make "loadXML(String)" handle "file not found"
  • Update java.lang.UnsupportedClassVersionError message
  • Semi-transparent colors do not display properly in PGraphics
  • Fixed a crash occuring while loading certain SVGs exported from Illustrator
  • Support PShape.contains() on GROUP objects
  • Improve implementation of PShape.contains() to take the CTM into account
  • Bug fixes:
  • Make sure the editor is updated after reloading changes (from Jakub)

New in Processing 3.3.7 (Mar 14, 2018)

  • A rollup of several fixes from the last few months.
  • changes most likely to be noticed:
  • Windows Defender blocks Processing 3.3.6. Not sure why this was happening,
  • but hopefully a new release should be all that's necessary to fix it.
  • https://github.com/processing/processing/issues/5329
  • Lots of fixes for the Net Library by Jakub
  • Include newlines at end of files (i.e. when saving .pde files)
  • Why do this?
  • Rename (refactor) dialog is unusable on high density screen
  • Detect errors from curved quotation marks (a headache when copying/pasting)
  • NullPointerException on close button with P3D and noLoop
  • Fix exception due to version parsing in Java 9
  • Fix line joins on triangles
  • somewhere in the middle:
  • Fix NullPointerException in ContributionManager.deleteFlagged()
  • Fix scrub comments for empty block comment /**/
  • Fix error checker crash when className contains [ or ]
  • Table.insertRow() causes ArrayIndexOutOfBoundsException (with fix)
  • blendMode() with PDF isn't showing the warning about it not being available
  • textureWrap() not updating when changed during draw()
  • Cap frameRate() to 1000 in OpenGL
  • ARM tweaks for shaders on the Raspberry Pi
  • Fix 3D on contemporary versions of Linux
  • cursor() don't work after void noCursor() in P2D and P3D
  • changes least likely to be noticed:
  • Fix JRE download issues
  • Update to Java 8u162
  • PdePreprocessor change is breaking current source
  • Output .java files in UTF-8 and force compiler to use UTF-8
  • Refactor to use a few Java 8 features
  • Remove "Pipe Organ" from exec() docs
  • Fix typo in Italian translation
  • Remove useless deprecation on PImage.mask(int[])
  • Make un/registering methods in PApplet thread-safe
  • set colorModeDefault to true by default
  • Minor bezierPoint() rewrite for performance
  • additions! new features!:
  • Added setIndex() method to IntDict, FloatDict, StringDict
  • Added resize() to IntDict, FloatDict, StringDict
  • Fix entries() Iterator in IntDict, FloatDict, StringDict

New in Processing 3.3.6 (Sep 5, 2017)

  • A collection of mostly minor bug fixes that have accreted since the last release back in June.
  • Add Italian translation
  • Wrong tab for missing brace
  • Fix typo in German translation
  • Movie Maker only works once
  • Add more build products to linux/.gitignore
  • Add issue template to the repo
  • Add workaround for window size = 0 crash
  • Fix comment/uncomment adding slashes at wrong indent
  • Add JavaFX runtime to error checker class path
  • Ironing out the new shell() command
  • Workaround issues with August 2017 release of Raspbian
  • Fix bugs in line vert shader
  • Updated to Java 8u144
  • Fixed issue with call to remove value instead of key in mode contrib hash
  • (this was only in the code used by the command line mode loader)

New in Processing 3.3.5 (Jun 24, 2017)

  • Fixes for a couple problems introduced in the last release [ everything that went bad ]
  • Console window was only remembering two lines of text because of a name collision in the preferences handling.
  • Something went wrong with the 64-bit Linux release: "libjli.so: cannot open shared object file: No such file or directory"
  • "Could not parse -1 for --display" message on some Windows machines [ some new things hopefully going good ]
  • Fix a NullPointerException that showed up with textWidth() and OpenGL
  • Per request, use native file choosers by default on Linux. I'm told that the default Linux file choosers have grown up in the last decade. I'm trusting the person who is making that claim and making them default.
  • To get the old behavior in the Editor, change preferences.txt to say:
  • chooser.files.native = false
  • Or in your code, add this line:
  • useNativeSelect = false;

New in Processing 3.3.4 (Jun 5, 2017)

  • Several useful bug fixes and improvements. Some big, many small:
  • Exported applications no longer report as "Damaged" on macOS Sierra
  • Prevent the console from freezing up when print() and println() are used to print thousands of lines of output.
  • Apple broke key repeat in macOS Sierra, here's how to fix it:
  • Fix the keyPressed variable when multiple keys are pressed

New in Processing 3.3.3 (May 3, 2017)

  • keyPressed not returning false once a key is released
  • Image tint() was broken in 3.3.x
  • Deal with loadBytes() regressions introduced by their rewrite

New in Processing 3.3.2 (Apr 26, 2017)

  • Broke a few eggs with that last omelette, and left a little eggshell behind.
  • This version takes care of a handful of revisions.
  • BUG FIXES, MOSTLY FOR REGRESSIONS:
  • ArrayIndexOutOfBoundsException when using tint() or loadFont()
  • createInput() wasn't returning null for files that were not found
  • Assigning Pixels Vertically Flipped in P2D
  • USEFUL UPDATES, THAT HOPEFULLY AREN'T REGRESSIONS:
  • Improve loadBytes() performance
  • Add (far) more efficient file loading for loadBytes(File)
  • Add loadBytes(URL) variant that uses content length header for array size
  • keyPressed is false if one key is released while multiple keys are pressed

New in Processing 3.3.1 (Apr 24, 2017)

  • With Casey and Ben together in Boston for a conference, we managed to
  • wrap up a few things and prepare a new release. Highlights include:
  • The UI now supports Arabic with a new translation provided by Omar Hommos
  • Several bug fixes have been implemented for high-res display support on Windows and Linux
  • Several updates from Gottfried for ARM devices like Raspberry Pi and CHIP
  • Lots of pixelDensity() and sketch scaling work has been developed by Jakub Valtar and is in the current release, though we've not yet activated these features entirely. Expect those in the 3.4 release.
  • And now on with the countdown:
  • BUG FIXES:
  • Fix gap between tab headers and text area at 125% and 150% scaling on Windows
  • Some line heights were wrong on hi-dpi displays
  • Fix small tooltip text on high-dpi screens
  • Ugly button images at 125% and 150% scaling on Windows
  • Get rid of error message when exporting sketches with the video library
  • Fix preprocessing of code with double backslash in string or char literal
  • Fix breakpoints in inner classes
  • Fix preprocessor skipping one char after a block comment
  • Synchronize input event processing
  • Scrub comments: skip the second chracter in the escape sequence
  • ADDITIONS AND CHANGES:
  • Added Arabic translation
  • Added Jump to Declaration
  • Fix the JRE downloader and upgrade to Java 8 update 131
  • Add another warning for yet another a bad NVIDIA driver
  • Make the Error Table extend white to the bottom
  • Use built-in font for any non-Roman or CJK language
  • GRAPHICS AND THE CORE:
  • Major work on window placement and pixel density by Jakub
  • Improve sum() functions in processing.data
  • Add sum() to IntDict and FloatDict
  • Add sumLong() to IntList, IntDict (to handle cases outside integer range)
  • Add sumDouble() to FloatList, FloatDict (to handle outside float range)
  • Throw exception when using sum() with numbers that are too large or small
  • createInput() and createOutput() now both use buffered streams by default
  • createInputRaw() does not, however
  • Don't derive the font again if the size is unchanged
  • fix temporary file handling for saveBytes(), saveStream(), etc wasn't handling gzip output properly also could have problems w/ names under length 3
  • GOTTFRIED'S ARMS:
  • Add support for 64-bit ARM boards
  • Hardware I/O updates for ARM
  • Fix MeshTweening vertex shader
  • ARM: Allow Raspberry Pi's Mesa GL driver to use up to 8 lighT ...and revert it back again
  • Retry with multisampling disabled if creating a framebuffer
  • fails because of INCOMPLETE_MULTISAMPLE
  • Report more error conditions in validateFramebuffer
  • Add more Raspberry Pi related fixes to JOGL
  • Unblock hardware-accelerated P3D on ARM Mali devices

New in Processing 3.3 (Feb 13, 2017)

  • BUG FIXES:
  • PDE was too small on high-res Windows and Linux machines. If you're having trouble with this, change the "Interface scaling" option in the Preferences window. On Windows, it will attempt to auto-detect.
  • UNCONFIRMED FIXES:
  • Visual artifacts on Windows 10 when using menus
  • Broken characters in the Welcome Page and the Contribution Manager
  • Add a dialog box to warn Windows users about NVIDIA driver problems
  • Blank window on startup where the "Welcome" screen should be
  • MINOR FIXES:
  • Prevent unnecessary 'file not found' errors in the console during Export
  • FIXED EARLIER:
  • Contribution Manager does not show all libraries until filter cleared
  • https://github.com/processing/processing/issues/4840
  • CHANGES TO CORE:
  • StringDict(TableRow) constructor to create a dictionary from a table row
  • Allow lone double quotes in the midst of CSV strings. This improves compatibility with spreadsheets exported from Google Sheets.
  • Return null (rather than NullPointerException) for PApplet.trim(null)
  • Make trim() work on column titles as well
  • Make Table.trim() also remove unused rows and columns. This will remove extra rows or columns at the beginning as well, since that's what trim() does to whitespace on strings.
  • Consume Unicode BOM (0xFEFF) in createReader() and Table parser
  • Return null for getString(), getJSONObject(), and getJSONArray() when key is not present, more in line w/ other API
  • Several fixes for memory leaks from jdf

New in Processing 3.2.4 (Jan 31, 2017)

  • The majority of these are from Jakub Valtar, plus a handful of other
  • contributors are noted below. Read all the way to the end for fun
  • new features.
  • THE PDE and THE EDITOR
  • Detect changes to 'hosts' file in case users modify/remove localhost.
  • No sketch window would open after hitting Run if someone had monkeyed
  • with their /etc/hosts file.
  • Ctrl-J (for debugger) is inserting newline
  • Spaces not handled correctly in when installing "processing-java" on macOS
  • println(int(byte(245))) throwing error
  • 'web colors' next to each other fail to parse in certain situations
  • Pasting code from editor to empty editor produces Exception
  • possible infinite loop on modified externally
  • Report missing brace in correct tab, suppress other errors until fixed
  • Improvements to sketch launching and stopping
  • Syntax highlighting issues (fixed with #4761)
  • Sketchbook window wasn't updating when sketches added, renamed, etc
  • CONTRIBUTION MANAGER:
  • Set text style properly for Contribution Manager error message
  • Added the remove filter feature (Akarshit)
  • Several Contribution Manager fixes
  • Add missing equals() and hashCode() to Contribution
  • Contribution Manager does not show all libraries until filter cleared
  • Mode, requiring update, appears in Updates tab but not in Modes tab
  • INTERNAL CHANGES:
  • Only require reference.zip to be present for build
  • Move the DEBUG flag into an external file or preferences.txt.
  • Replace java.util.logging code with built-in logging.
  • Split GUI and non-GUI portions of console for earlier startup.
  • (Otherwise System.err/out not going to a file unless we have a GUI,
  • which means we couldn't debug before the GUI shows up)
  • Fix JRE download failure during ant build due to Oracle change
  • https://github.com/processing/processing/issues/4823
  • THE CORE:
  • Write exec() documentation
  • https://github.com/processing/processing/issues/4740
  • XML fixes for getChild() producing valid XML. Add xmlns to
  • elements procured from getChild(), and making sure newline
  • is added after XML header when formatting.
  • Adding missing docs and keywords for TableRow
  • PShape in Java2D wasn't respecting 'kind'
  • Sketches still running in the background after closing
  • CLOSING BUGS IN OPENGL
  • PShape array index out of bounds when using P3D
  • Disable modelX/Y/Z() in P2D because they don't exist in 2D
  • Fix typo in GLSL preprocessor
  • Keep Windows timer resolution high for OpenGL sketches.
  • Prevents frame rate in OpenGL hovering around 30 instead of 60.
  • [ the jakubfx renderer ]
  • FX: Prevent matrix stack overflow
  • FX: Reset transform to identity before drawing background
  • FX: Implement mouse wheel event
  • FX: Fix curveVertex drawing all curves together as one long curve
  • https://github.com/processing/processing/pull/4800
  • https://github.com/processing/processing/issues/4382
  • FX: Add exception handler which reports exceptions from user code
  • https://github.com/processing/processing/pull/4798
  • https://github.com/processing/processing/issues/4339
  • Unify mouse pressed/released events across renderers
  • https://github.com/processing/processing/issues/4361
  • https://github.com/processing/processing/pull/4797
  • NEW FEATURES:
  • Add listPaths(), listFiles()
  • https://github.com/processing/processing/issues/4622
  • Add increment() method that takes IntDict to merge another dictionary.
  • Calling this increment() since it doesn't make sense in practice for
  • the other dictionary types, even though it's technically an add().
  • Added Entry class for iterating StringDict, IntDict, FloatDict
  • Added XML.print() method (prints with indent of 2)

New in Processing 3.2.3 (Dec 1, 2016)

  • contributions manager:
  • If prettyVersion isn't present, just use version number
  • Ensure that update.id is set before checking for contrib updates
  • Clicking "Update" button in contrib manager shows non-retina version of icon. Other instances of the double-size icon found, should be fixed now
  • Fix the library reporting scripts on the server
  • Missing version number putting 'null' in the UI
  • Major clean-ups to the Contribution Manager code
  • contributions to the manager:
  • Up-to-date status disappears after filter is removed (contributed)
  • Updates tab blank after adding, removing, updating a contribution
  • Fixes the removal of redundant contribution and update related issues
  • opengl improvements:
  • Automatic detection of POINT and LINE shaders fails
  • Show warning when frameRate() less than 1 is called with P2D and P3D

New in Processing 3.2.2 (Oct 31, 2016)

  • fixes:
  • Find in reference for size() opens StringList.size()
  • Limit rollovers on EditorStatus to the text portion. Clicking the status
  • area when a URL was showing was problematic because it's also the separator
  • used to adjust the relative size of the two panels.
  • Switch to Java 8u111. Not using 8u112 because the build numbers are
  • different depending on the platform, and no 112 fixes are known useful.
  • Errant "Could not open the URL" when clicking on error messages
  • Fix extensions handling in CFBundleDocument code from appbundler
  • Update launch4j to 3.9, fixing a problem with exported applications
  • on Windows reporting "This application requires a Java Runtime Environment
  • .8.0_74", when 1.8.0_101 or later were installed.
  • Minor String comparison fix for Tweak mode
  • Fix quoting problem in IntDict.toJSON()
  • Add getRenderer() to SurfaceInfo for Andres
  • Exceptions thrown in OpenGL apps when hitting the window's close box
  • Add getRowMap() function to Table
  • Go back to textMode(MODEL) is native font not available for textMode(SHAPE)
  • https://github.com/processing/processing/issues/4680
  • NPE thrown when using textMode(SHAPE) with a .vlw font
  • https://github.com/processing/processing/issues/4680
  • Add toJSON() method to the data classes (IntDict, FloatDict, StringDict,
  • IntList, FloatList, and StringList). Returns an object of one of those
  • six types as a JSON-formatted String. For something more like the old
  • toString() behavior, use print().
  • gottfried's goodness:
  • Simplify font situation to make it possible to use vanilla JRE trees
  • Updates for ARM
  • Automatic handling of screen FBOs breaks readPixels() for user-provided FBO
  • PGraphicsOpenGL: camera info not updated
  • Fix PShape, updateTessellation, matrix transformations
  • QUAD_STRIP as child shape draws extra lines
  • Remove extra glClear() calls
  • PShapes do not show up in PDF with P2D renderer
  • Some semi-transparent edges of sphere() meshes rendered in higher density
  • P2D and P3D not stopping with empty draw() blocks
  • other contributed fixes:
  • Chinese translation updates
  • Spanish translation updates
  • Spanish "open sketch folder" fix
  • Contribution Manager showing 'null' for PeasyCam version
  • Call glGetProgramiv to retrieve program log length
  • JSONObject get() method is private

New in Processing 3.2.1 (Aug 22, 2016)

  • FIXES:
  • "Could not replace preferences.old" error message on startup when using Processing for the first time.
  • Version 3.2 won't run from paths with spaces on Windows
  • Python Mode was crashing on startup
  • ADDITIONS:
  • When quitting an OS X sketch, sometimes it was necessary to quit twice. Added some code to work around this; we'll see how it goes.

New in Processing 3.2 (Aug 18, 2016)

  • BUG FIXES:
  • Processing .jar files in CLASSPATH can cause startup crash
  • Remove java.ext.dirs on startup to avoid conflicts and startup errors
  • Add 2016 to the About screen.
  • Write preferences.txt using a temporary file (and save the previous version as preferences.old)
  • Some Table cleanup based on other CSV parsing work
  • Can't render PGraphics object using image() within a PDF
  • CONTRIBUTED FIXES:
  • Use HTML to print (a contributed fix for a handful of printing issues)
  • NullPointerException in SketchCode.getDocumentText()
  • Error checker now adds 'public' to all default access methods
  • Fix resizing targets for async save
  • Make loadStrings() and loadJSONObject/loadJSONArray() error msgs consistent
  • CHANGES:
  • Implement template sketches
  • PApplet.main(Blah.class) now works (for easy refactoring)
  • Rewrite Util.listFiles() because it wasn't working properly
  • Add printStackTrace() method in PApplet that can be overridden
  • DEPECHE MODE:
  • Add template support for Modes
  • Added getSketchbookTemplatesFolder() to Base
  • Move general PDE code out of JavaMode and into general base classes
  • Change default PdeInputHandler constructor slightly (added another copy so that older Modes will still work properly)
  • Change PdeKeywords to PdeTokenMarker (please notify us if this breaks anything).
  • Added Mode.requireExampleCompatibility() so that Modes can specify whether example packages should specifically mention their Mode in order to be visible when that Mode is in use.
  • Mode.getTokenMarker(SketchCode code) passes through to no arg version if not overridden.
  • INPUT METHOD WORK:
  • Enable input method support by default on Japanese/Korean/Chinese systems
  • Set text color for InputMethod
  • Set sketch as modified when any character committed using input method
  • Insert characters by InputMethod at one time
  • Insert string when it is committed
  • Simplify conditional branch

New in Processing 3.1.2 (Jul 30, 2016)

  • PDE FIXES:
  • NullPointerException in LanguageBundle.read() on startup that prevented Processing from starting up on Windows machines. Network drive issue.
  • Bring back preference to hide the error checking. Error checking will continue in the background because it's needed for parsing/preprocessing, but some were complaining about the error checker messages.
  • Updates to Japanese translation
  • Make preferences button wider for Japanese
  • Fix logic for warning message when the Mode cannot be changed
  • Update to Java 8u102 build 14
  • API FIXES:
  • Rewrite CSV handling to take care of some parsing bugs and improve performance. Note that the 'newlines' option is no longer necessary when loading files that contain newline characters mid-field.
  • Prevent random(low, high) from returning 'high'
  • Fixed iterator remove() methods so they don't skip container elements
  • Added a check for length 0 arrays in expand()
  • GRAPHICS:
  • Disable asynchronous saveFrame() by default. This can really improve performance, but can cause weird glitches. Bring it back by using hint(ENABLE_ASYNC_SAVEFRAME) in your code to blissfully and speedily create image sequences. https://github.com/processing/processing/issues/4578
  • Prevent NPE in loadImage() when called before setup()
  • Fix crash when calling getUniformLoc() called in PShader.set()
  • RASPBERRY PI:
  • IO: Fix drawing for SPIAnalogDigital examples h
  • Update JVM warning text on Linux
  • Undo the 8u91 workaround, add Mesa warning for ARM
  • IO: We want motors, they said (implements SoftwareServo)
  • Add a temporary workaround for the CHIP to deal with cursor problems
  • Fix GLExceptions on Raspberry Pi when using offscreen PGraphics
  • FIXED EARLIER:
  • Debugger deadlocks when choosing "Step Into" on println()
  • Suggestions switch scope to first import
  • loadImage() immediately after saveFrame() foiled by async default
  • the hint() mostly works, but gross to use a hint frequently
  • Fix the Downloader so that builds work again

New in Processing 3.1.1 (May 18, 2016)

  • THE BIG ONES:
  • Fix InvocationTargetException when using the command line
  • Block loadImage() and requestImage() while images still being saved
  • THE EDITOR:
  • Out of date Modes no longer hand Processing 3 on startup, and will cause less trouble when changing Modes
  • Undo is a little "jerky" in insert mode
  • "Replace" and "Replace All" do not undo in a single step
  • Comment/uncomment removes indenting
  • Remove poorly implemented "rectangular selection" support from the editor
  • Loader is not visible when opening the Updates tab
  • Make Comment/Uncomment trigger on numpad slash
  • Hex values throwing errors in 3.1
  • Fix up cmd-click/ctrl-click behavior, add preference to disable it
  • Make undo/redo mark all affected tabs as modified
  • Switch back to JRE 8u77 on ARM to fix GL video library performance
  • THE CORE:
  • Implement support for encoding= option in loadTable() PShapeOBJ error String for missing MTL texture file
  • Shape (OBJ) import texture data is 0.0
  • YOU'LL NEVER NOTICE:
  • Fix 'ant clean' so that it actually... cleans.
  • Fix error messages from Javadocs
  • FIXED BUT FORGOT TO TELL YOU:
  • Complex text input issues (fixed in 3.0.2)
  • Allow Movie Maker to cope with bad files (fixed prior to 3.0?)

New in Processing 3.0.2 (Feb 15, 2016)

  • EDITOR CONTRIBUTIONS
  • Add install script for site for ARM
  • Search/replace shouldn't include the string being replaced, otherwise it can get into an infinite loop.
  • 'Background Color when Presenting' not visible on Preferences window
  • Fix minor autoformatter bugs (enums not working)
  • Update Source Code Pro and Source Sans Pro fonts to the latest versions
  • Minor fixes for Java Mode
  • Add i18n support for the PopUp menu
  • Add Turkish to the list of languages
  • Make the error message for stack overflows clearer
  • Get rid of dt_socket message, making command line run a little better
  • Message when reference is find out on nothing selected
  • Better handling of quotes in command line args
  • Fix crashing bugs when user's name has non-ASCII characters
  • ARM updates to include GPIO numbers and images of wiring diagrams
  • Icon instead of an "X" for the "could not connect" message
  • Several fixes for Chinese/Japanese/Korean InputMethod support
  • Add 'downloading' indicator to the Contribution Manager
  • MORE EDITOR:
  • Move to Java 8u74, also fixes JavaFX issue.
  • GRAPHICS CONTRIBUTIONS:
  • Fill out the Javadoc for PMatrix
  • Have PSurfaceFX pay attention to the setVisible argument
  • Use xdg-open in PApplet#launch(String)
  • MORE GRAPHICS:
  • Fix another "Zero length string passed to TextLayout constructor" error
  • Add additional clarification for IDE users on where to call smooth()
  • Flipped Y-axis in JavaFX is now repaired (the JDK bug now fixed)
  • Stop button in OpenGL exported applications does not use preference settings
  • Export without a stop button using P3D or P2D
  • glClearDepthf() not available on older hardware
  • Drawing a sphere with shape() first changes sphereDetail from default
  • PShape.scale() affects strokeWeight differently in P2D and P3D
  • createShape(GROUP) textured child non-textured child = P3D render problems
  • pixelDensity() and createGraphics() with P3D
  • Friendlier message when running drawing commands outside animation thread
  • strokeWeight() not working properly with point() in P2D and P3D
  • exit() is not called in P2D/P3D
  • attrib*() function does not work well with PShape
  • Initialize sketch args before calling settings()
  • Workaround for JRE bug freezing the PDE during code completion
  • Prevent NPE because editor UI was not updated on AWT
  • Fix NPE when stepping into static method
  • Step button works correctly when SHIFT or ALT is pressed
  • More editor fixes
  • Tooltip over variable decl has wrong style and content
  • May have fixed this NullPointerException in initiateToolTip()
  • "String index out of range" error with bracket handling in the editor

New in Processing 3.0.1 (Oct 26, 2015)

  • curveVertex() does not work with FX2D renderer
  • Hide menu bar on OS X when FX2D is running full screen
  • Add quotes to the necessary parameters in the size() error messages
  • Editor menu is outside the visible screen with 800x480 display
  • Add a patch for FX2D menubar not hiding, root cause not sorted out
  • Fix depth sorter ordering when two triangles in a plane share vertices
  • Turn off fixed rate scheduling in OpenGL
  • Fix GLSL preprocessing issues with variable name mangling cursor() fails to work as expected with P2D/P3D
  • Topics/Shader/Convay broken
  • Regressions wrt GLES2 support between b4 and b7 stroke glitches in P3D
  • Line loops incorrectly closed in P3D
  • pixelDensity() not working with createGraphics() and OpenGL
  • GL related crashes when closing the display window on Ubuntu (Intel)
  • GL related crashes when closing window on MacBook Air (Intel) running 10.9.5
  • Update to JogAmp JOGL 2.3.2
  • Output window cannot be set as non-resizable with the P2D or P3D renderers
  • https://jogamp.org/bugzilla/show_bug.cgi?id=1188
  • setAlwaysOnTop() does not work in P2D and P3D on Mac
  • P2D and P3D windows behave strangely when larger than the screen size
  • Remove Gluegen & JOGL sources
  • Not Graphical Issues:
  • NullPointerException in ContributionManager.deleteTemp()
  • Tweak Mode sometimes freezes while running, require a force quit
  • Tweak Mode: Some numbers ignored in second tab
  • Update Japanese translation processing-java stealing focus even with --build flag
  • Documentation updates and other serial fixes
  • Include Example packs into update count
  • Editor objects are staying in memory
  • Library path for Error Checker and Suggestions
  • A serious error occurred while trying to create a new editor window
  • Export - fix Java not being embedded on 64bit
  • Add error checker document listeners to all tabs
  • Fix memory leak in Recent menu
  • Error checker update (also enables switch on String objects)
  • Fix occasional exception while editing text
  • Prevent preprocessor from crashing when setup() has no body
  • I/O library implementation and fixes for ARM

New in Processing 3.0 (Oct 1, 2015)

  • This document covers (in detail) the individual changes between releases.
  • For an overview abut what's new, different, and exceptional in 3.0, read:
  • https://github.com/processing/processing/wiki/Changes-in-3.0
  • Most of the changes from the previous beta involve the final beautification
  • of the GUI, and the beatification of the error checker and auto-completion
  • features.
  • GUI UPDATES AND FIXES:
  • "Saving" messages never clear on "Save As"
  • Show number of updates available in the footer
  • Click the "Updates" item in the footer to open the Contribution Manager
  • Make breakpoints more prominent
  • Implement the side gradient on the Editor
  • Replace startup/about screen (1x and 2x versions)
  • Implement splash screen on OS X. Shout out to this article:
  • Make the left edge of the Console match the Error List
  • Windows suggests "Documents" as a new location for the 3.0 sketchbook
  • ERRORS AND WARNINGS:
  • Hide useless error in error checker
  • Error checker updates for toggle and listeners
  • If fewer lines in sketch than can be shown in window, show ticks adjacent
  • + Distinguish errors and warnings in the error list
  • Clicking an error or warning should give the focus back to the editor
  • Fix placement and visual design when showing error on hover
  • Fix the design of the completions window, new icons, etc
  • Update status error/warning when changing the line
  • CONTRIBUTION MANAGER:
  • Contributions filter ignored after clicking Install
  • Exception in thread "Contribution List Downloader"
  • Grab bag of Contribution Manager fixes
  • ArrayIndexOutOfBoundsException freak out when clicking the header line
  • PLUMBING:
  • Fix nasty file counting problem in the change detector
  • Clean up delete dir function
  • Don't follow symlinks when deleting directories

New in Processing 3.0 Beta 7 (Sep 23, 2015)

  • Changes and additions:
  • Changed the Tool API to pass Base instead of Editor
  • Error checking and auto-completion fixes:
  • Huge rewrite of auto-complete and error checking code
  • Make preprocessor scope-aware
  • Red error underline is sometimes at wrong location
  • Using "new color()" instead of "color()" results in "color type detected"
  • Code editor wrongly detects errors for libraries in code folder
  • Watcher bug fixes:
  • "Your sketch has been modified externally" with encrypted OS X volumes
  • sketch modified externally with FAT32 volumes on OS X
  • Prevent re-prompting users when they say "no" to "sketch modified" message
  • Add more preferences for editor.watcher to help with debugging
  • Cleaning up the logic in the watcher
  • Contribution manager fixes:
  • Contributions Manager UI design
  • CM selected tabs are too tall
  • CM: Clicking item in Libraries list throws exception
  • CM: Libraries missing descriptions and Foundation credit
  • Clean up the header for the scrolling lists
  • Use real version of bold font, rather than the fake version, in several locations.
  • Remove the "v" from the version numbers in the updates tab
  • Set the frame title
  • Remove tooltip that repeats the contents of the tab labels
  • Fix spacing of buttons relative to the scroll bar
  • Updates tab has ugly horizontal line at top
  • Get rid of fake italic subheads on the Updates page
  • Remove extra component borders and focus quirks
  • Don't focus the window on the search box on opening
  • Prevent "updating" to a still-incompatible version of a contrib
  • Tools are getting redundantly added when installing new Tool
  • After clicking 'install' it's still possible to click it again
  • CM list should be sortable by status and author name
  • "Update All" button appears to do nothing in library manager
  • Miscellaneous bug fixes:
  • JNA errors on startup when run from an account w/ non-ASCII characters
  • UnsatisfiedLinkError on startup "Access is denied" on Windows 10
  • SVG not highlighting as a keyword
  • Implement retina (2x) versions of all Contribution Manager icons
  • Show hover text when the mouse is over the 'debug' button
  • Update rollover label for buttons when pressing shift or alt
  • Replace the coffee cup icon for the Welcome window
  • ctrl-space first inserts space, then deletes it, with completion
  • Fix the bold text in the welcome window to not use fake bold
  • We still care about graphics, too:
  • FX2D display is inverted in 3.0b6
  • surface.setLocation(x,y) not working with the default renderer
  • Make the PApplet regex cache LRU
  • Minor OpenGL improvements
  • Cannot re-enable stroke or fill of a PShape with P2D
  • setResizable() with OpenGL broke in 3.0b6
  • surface.setLocation() with OpenGL causing a freeze on Windows
  • selectInput/Output() is behind the drawing window (Windows)
  • MouseWheel count wrong (backwards) in P2D and P3D

New in Processing 3.0 Beta 6 (Sep 11, 2015)

  • Bug fixes and improvements:
  • Deal with ConcurrentModificationException in Editor
  • "Error repainting line range" and ConcurrentModificationException
  • Major surgery performed to drastically reduce the memory footprint
  • Remove old versions of processing-java when installing on OS X
  • Confusion when // tweak was used accidentally, changed to /// tweak
  • Don't allow breakpoints to be set on blank lines
  • Fixed a couple hard crashes back in alpha 10:
  • EXC_BAD_ACCESS inside AppleIntelHD5000GraphicsGLDriver when starting 3.0a8+
  • Hard crash on startup inside strlen call when using 3.0a8+ on OS X
  • Though the workaround re-introduces issues that had been fixed earlier:
  • Add the Contents/Java folder to java.library.path on OS X to fix exported applications that use native libraries (i.e. Sound)
  • Add surface.setAlwaysOnTop(boolean)
  • Implement standard cursor types in OpenGL
  • Change value of constants PRIMITIVE, PATH, and GEOMETRY constants in PShape
  • This avoids a collision with entries in PConstants which causes confusing errors or no errors to be thrown at all
  • Fix flickering cursor regression with Java2D on Windows introduced
  • Error/warning location visualisation not updating when editor resizes
  • unexpected token" on anonymous instance of parameterized Comparator
  • Incomplete text rendering of strings with consecutive line breaks:
  • FX - fix transformation stack NPE
  • FX - fix rad-deg conversion in rotate()
  • FX - basic pixel operations (get, set, load, update)
  • FX - align to pixel grid when drawing 1 px strokes
  • FX - keyChar and keyCode are super wonky and unlike AWT
  • FX - arc - infamous deg-rad conversion strikes again
  • FX - paths, contours, curves
  • FX - fix AIOOBE when pressing ESC on Mac
  • FX - framerate fix
  • FX - loadPixels, updatePixels, get and set optimizations
  • FX - keep track of whether pixels are up to date
  • FX - improve key events
  • FX - add FX2D keyword, remove JFX keyword
  • X JOGL - normalize enter key
  • FX - normalize enter key
  • Render text starting with space properly
  • FX - smooth for the main surface
  • OpenGL - clean up loaded and modified for pixels
  • FX - text stuff, move createFont() into PGraphics
  • FX - fix bug where fonts would share a tint cache
  • textFont() and textSize() are each calling one another move createFont() to PGraphics
  • Fix PShape creation in P3D keyTyped() not firing with P2D and P3D
  • Implement a way to disable automatic key repeat implemented for OpenGL, where key repeat is now disabled by default hint(ENABLE_KEY_REPEAT) will turn it back on
  • With the P2D and P3D renderers, a generic set of cursors are used because the OpenGL renderer doesn't have access to the
  • default cursor images for each platform.
  • Manindra re-emerges:
  • Code auto-complete not working with imported libraries
  • Google Summer of Contribution Manager:
  • CM: Category dropdown alignment finalize CM tab order
  • Several of those below were in beta 5...
  • CM - Focus is shifted out of the filter field when something is searched
  • CM - info panel text color
  • CM - Filter field display
  • Update buttom enabled when updates are present and background is set
  • Fix info panel text color and alignment in CM
  • Ready to add contributed example packages?
  • P2D: error calling surface.setTitle()
  • Error message with noLoop() and P2D renderer
  • Concurrency issues in OpenGL renderer prevent proper garbage collection
  • In P2D/P3D the background is cleared to black on each frame
  • cursor() command with PImage stopped working in 3.0 with P2D
  • Demos/Graphics/Wiggling regressed from 17 fps to 8.3 fps between a11 and b1
  • "Library not installed properly" message inconsistent in P2D/P3D vs. JAVA2D
  • PShape 3D: strange extra lines (another fix)
  • Line direction vectors are incorrectly transformed
  • Strokes in 3D PShapes are not properly connected
  • Setting surface properties hangs OpenGL sketches

New in Processing 3.0 Beta 5 (Aug 26, 2015)

  • changes:
  • Removed support for fixed-function pipeline in OpenGL. I'm told this "brings us out of the 90s" and gets things a bit more up-to-date and compatible across many platforms and varying device types.
  • Remove legacy GL functions from PGL
  • Update LowLevelGL to use VBOs
  • bug fixes:
  • Line selected for errors is off by one or two
  • NullPointerException in selectFolder() on OS X
  • Wrong positioning of circles in SVG shapes (regression from 2)
  • setFill() on PShape in Java2D throws ArrayIndexOutOfBoundsException
  • saveJSONObject() doesn't close the file
  • processing-java fixed for OS X 10.11 El Capitan
  • Prevent a prompt to install Xcode coming up on Export to Application
  • Live error checker complains about F instead of f after floats
  • NoClassDefError with CLibrary and getenv when switching to Android Mode
  • foundation= bug fixes + improvements:
  • keyTyped() not firing with P2D and P3D
  • rect() sizing in JavaFX
  • FX - Proper sketch sizing
  • FX - implement frameRate()
  • FX - Fix key typed
  • FX - Make key events little bit more sane
  • "Internal graphics not initialized yet"
  • NullPointerException in Demos > Graphics > Planets
  • PDE window leaks undisposed Timer objects even when closed
  • contributed fixes:
  • Undo does not move to the correct location in the editor window
  • Undo sometimes causes the editor to go blank
  • Miscellaneous language improvements
  • Google summer of code:
  • Foundation libraries dissapear from CM after restart
  • CM blue bar missing
  • CM column widths change with selection
  • Remove category dropdown from CM except when viewing libraries
  • Right-clicking popup menu closes instead of shifting its location
  • Use 1x or 2x icons in the CM
  • Shifted the text right a little bit
  • No underline and no blue color
  • Make auto-format into a compund edit
  • Focus is shifted out of the filter field after CM search

New in Processing 3.0 Beta 4 (Aug 17, 2015)

  • bug fixes:
  • Fix NullPointerException with some sketches that have no size() command
  • Fix reports of invalid OS X code signature on some machines
  • Canceling "create folder, move sketch, and continue?" will cause crash
  • Move Platform into its own class, also Messages and others
  • "Zero length string passed to TextLayout constructor" message
  • improve speed of text(x, y, w, h) when using large strings with no spaces
  • filter(PShader) was broken in HDPI mode
  • Ctrl+R (Cmd+R) not restarting sketch when debug is enabled
  • Hitting Run while a sketch is running should restart the sketch
  • api/implementation change:
  • Several platform-oriented features have moved to Platform
  • i.e. Platform.isWindows(), Platform.openURL(), Platform.getJavaPath()
  • Base.showXxxx() and Base.log() have moved to Messages.showXxxx()
  • Make fields and functions in PdeKeywords protected
  • Added "EditorException", which is thrown when loading bad sketches
  • Pass command line arguments to sketches with processing-java
  • Implement add(x, y) and sub(x, y) in PVector
  • Add method to JavaMode for search path
  • google summer of code:
  • Second round of arm patches (v5)
  • Third bunch of arm patches
  • Contribution Manager GUI updates
  • Sorting CM by the author name inplemented
  • CM needs minimum window size enforced
  • Deactivate install button when incompatible
  • CM "Updates" badge appears even when there are no updates
  • Ignore accented characters when filtering in the CM
  • Enable arrow keys for navigating lists in the CM
  • CM filter input glitchy
  • Set font correctly in Contribution Manager dialog
  • fixed earlier, spring cleaning:
  • Closing the color selector makes things freeze (only Linux and Windows?)
  • Comment/Uncomment should ignore leading whitespace
  • Export unsaved sketch > agree to save prompt > export doesn't finish
  • Add disconnectEvent() to Server
  • False positive for mixing active/static mode in Tweak Mode 3.0 alpha 5
  • Determine shortcut for Export vs Use Selection for Find
  • PDE erroneously detects changes in non-sketch files
  • Proper handling of sketchPath() for OS X in exported apps
  • textWidth() incorrect with default (JAVA2D) renderer and default font
  • Error on size() when using FX2D due to stage inset issues
  • your contributions are funding graphics fixes ]
  • Remove alpha filler (hopefully no regression here)
  • Huge Java2D blending patch
  • Accuracy problems make alpha channel go to FE with image.copy()
  • Fix blue-channel bias on blend()
  • Improve blend() accuracy when using ADD
  • Upgrade OpenGL (remove support for fixed-function pipeline)

New in Processing 3.0 Beta 3 (Aug 12, 2015)

  • Prevent 'examples' from showing as a folder in the sketchbook window
  • Don't show breakpoints when debugger is off
  • No setting breakpoints when debugger is off
  • Foundation library examples should appear under "Core" or "Foundation"
  • Use ctrl-pageup/down on Linux for prev/next tab
  • Library names not showing up correctly ("pdf" instead of "PDF Export")
  • Contributed Examples were using their folder name, not the 'name' field
  • from their properties file when shown in the Examples window.
  • Include name of sketch when asking user "Save sketch before closing?"
  • Did i18n changes for OS X and other platforms, though some languages will need additional updates to be compatible.
  • Modify naming of contributed examples
  • Show a warning when map() prints a bad value
  • Implement a nf(float) function to support the changes in map()
  • Breakpoints don't 'jump' after hitting Enter on blank line
  • Implement focusGained(), focusLost(), and 'focused' variable in P2D/P3D
  • IndexOutOfBoundsException with pixelDensity(2) and P2D
  • Shaders output to bottom left corner rather than full window in 3.0b2

New in Processing 3.0 Beta 2 (Aug 10, 2015)

  • Several delicious bug fixes to repair things that cropped up in the first
  • beta release. Please keep the reports & code coming and help us get to 3.0.
  • BUG FIXES:
  • "Add Library..." fails with "Could not write to temporary directory"
  • Make size(displayWidth, displayHeight) still run in a window.
  • Fixes "fullScreen() cannot be used here" message on startup.
  • In the past we were auto-detecting if it was the screen size, and switching to full screen mode. But that's now removed because fullScreen() is so easy, and full screen may not be wanted.
  • Cannot find "processing.core" library. Line 12 in tab sketch_150704a" also happens with "import to com.jogamp.opengl.GL2" Code still ran properly, but looked like errors in the editor.
  • Remove "pair is" debug messages from Welcome screen
  • Save Export to Application settings between uses
  • Fix NullPointerException in setVertex()
  • Toggling between noLights and PointLight in draw() behaving strangely
  • NullPointerException in Planets demo
  • Late breaking fix to repair Tweak mode
  • CHANGES AND IMPROVEMENTS:
  • Show contributed examples in the Examples window
  • Initialize the Find dialog with the current selection
  • Disable Export button when no platforms selected. In previous releases,
  • Prevent Export with examples and untitled/unsaved sketches
  • Links in error bar are not selectable nor clickable
  • DEVELOPMENT FIXES:
  • Building: make the download-jdk-macosx target work properly
  • Throw an error when using methods that require sketchPath outside setup()
  • Cleaned up the advanced OpenGL wiki page cursor(CROSS) breaks when using surface.setTitle()
  • FIXED:
  • blend() and copy() are not pixel accurate for copy/scale

New in Processing 3.0 Beta 1 (Aug 7, 2015)

  • The new Welcome screen! was... completely broken
  • StringIndexOutOfBoundsException while preprocessing
  • Run/Stop/Debug buttons do not fire if the mouse moves during the click
  • Some contributions were listed multiple times
  • Do not filter Ctrl+Alt+? out as menu mnemonics
  • Fix delete tab shortcut in toolbar popup
  • Deleted tab still present in tab menu
  • Make PFont.size protected again
  • Tweak implementation of PVector.heading()
  • Fix problem with JAR loading inside createInputRaw()
  • Changes:
  • Add new console/errors icons to the tabs in the footer
  • Get images working in the Welcome screen
  • Add getSurface() method ('surface' is protected in PApplet)
  • Remove 'contrib updates available' dialog box for now. A new version is coming soon that will be better-integrated with the editor.
  • Internal changes you'll probably never notice:
  • Add message that says it's safe to ignore the tools.jar warning
  • Add "git pull" on processing-docs for "dist" target
  • Update to launch4j 3.8
  • Contributions from the community:
  • Fix contribution compatibility check
  • Update Spanish translation
  • Fix bug with tab sorting when adding new tabs
  • CM updates dialog box doesn't open CM
  • Adding CM ellipses only when text is long
  • Include mode imports when rewriting .properties file
  • Assortment of patches from gohai's arm-3.0 branch
  • Implement depth sorting! Use hint(ENABLE_DEPTH_SORT) and say goobye to your 3D transparency woes!
  • Remove size() from setup() when copying to settings()
  • Remove mode parameters from createShape(), fixes parameter collision issues
  • Radius for rect not working on PShape
  • Bug in arc with createShape()
  • OpenGL sketch flickers when draw() is missing or empty
  • size() errors
  • rect() with stroke outline renders 1px wider and taller in P2D behavior is correct, explanation provided
  • setVertex() not working in P3D and P2D
  • Add hint(ENABLE_BUFFER_READING) to handle stencil/depth buffers
  • ArrayIndexOutOfBoundsException error when enabling depth sorting in P3D
  • Fix curves - properly this time
  • Remove duplicate curve vertex
  • JOGL window size is now set properly
  • Device parsing on Linux is incorrect, causing "display 1 doesn't exist" msg
  • Flush geometry when lighting changes, otherwise lights apply to entire scene

New in Processing 3.0a11 Pre-Release (Jul 17, 2015)

  • new additions:
  • You'll be greeted by a Welcome screen. We haven't finished the text for one of these yet, so you'll see some lorem ipsum (fake) text instead. We'll wrap that up before the beta release.
  • breaking all of the things:
  • For Tool and Mode authors, you'll need to make some (small) changes.
  • These aren't structural, but will require a rebuild of your code. Our hope is that this will be the last round of changes for the 3.x series, and that it's now safe to update your Modes and Tools to be compatible with the final 3.x release.
  • Changes in this release:
  • Several classes have been moved to a new processing.app.ui package.
  • The processing.app package was much too unwieldy and made it difficult for people to hack on the PDE code.
  • Several functions have moved out of Base and into Util (or Toolkit).
  • Most of these are file-related (removeDir() and others), but the Base class had simply grown to a ridiculous size. It remains enormous but is a little less ridiculous.
  • Removed the init() method from PApplet; it's no longer needed
  • fixing all of the things:
  • Show warning when display spanning is turned off with fullScreen(SPAN)
  • Add note about headless exceptions that points to Github
  • Resize children[] so that getChildren() returns a correctly-sized array
  • clear() was broken (maybe related to #3317)
  • PGraphic ignores PNG transparency (regression from 3.0a5, same as #3378)
  • Move error messages out of PConstants
  • Remove launch(String) since it was calling itself, and anachronistic
  • Sketches with new fullScreen() method should grab focus by default
  • Sketches not getting focus with Java2D
  • draw() executes twice when noLoop() called in setup()
  • displayDensity() not functioning properly
  • surface.setXxx() handling
  • Methods for setResizable(), setVisible(), setTitle(), setIconImage()
  • Add the "don't use this" warning to the JFrame in PSurfaceAWT
  • ArithmeticException: / by zero when using fonts opened with loadFont()
  • SVG briefly broken for Java2D
  • Change how font metrics are pulled to fix text width issues
  • Check alpha when image extension is "unknown"
  • Add support for more Image types (BGR) with PImage(java.awt.Image)
  • Move Java2D and JavaFX classes to their own packages
  • multithreading is hard:
  • Sketch not always showing with empty draw()
  • Static mode broken with Java2D on Windows and Linux
  • Sketch sometimes doesn't show with noLoop() on Linux
  • Window never shows with exported application on 64-bit Linux
  • Fix presentation mode
  • Re-enable the display menu in Preferences after display added. Previously, the checkbox menu stayed disabled (though it updated the list)
  • sketch.isReadOnly returns false for examples coming from multiple modes
  • Drag and Drop & "Add File" broken for .pde files in 3.0a10
  • Show "not compatible" error message in the manager
  • Add more code for handling low-level errors on startup
  • Update the "Supported Platforms" wiki page with current status
  • displayDensity() not functioning properly
  • Error message caused by curly bracket in a println string
  • Tweak mode broken (re: new settings() function)
  • Add build.xml prompt for OS X developers to download the JDK update
  • contribution manager:
  • Change the .properties file syntax a little bit:
  • compatibleModesList -> modes
  • authorList -> authors
  • category -> categories
  • Send list of installed Libraries, Modes, Tools, and Examples on update
  • Disable contrib manager updates when "check for updates" is turned off in Preferences. Also updated the FAQ to cover the changes.
  • pull requests, summer of code, and other community help:
  • Use correct localized strings in JavaEditor.java
  • Dim edit menus as appropriate during selection/no selection/etc
  • Internationalize MovieMaker.java
  • Auto-completion does not seem to be working
  • Re-enable export to application with command line
  • Change undefined constructor error message for clarity
  • Mode problems window wasn't doing line breaks
  • Add missing internationalization in app/Sketch.java
  • Examples window shows contributed examples
  • Reworking the Contribution Manager according to Scott's redesign
  • Finish adding 'examples' contribs
  • Error during installation of any contribution
  • Significant work by Akarshit for Google Summer of Code
  • Fix NullPointerException in DepthSorter
  • retina/hidpi fixes:
  • Make g.pixelDensity public inside PApplet (so accessible by sketches)
  • Add pixelWidth/Height to PApplet
  • Text looks blurry in GL Retina
  • Text not getting the correct font in Retina2D
  • Text is half size in PGraphicsRetina2D
  • andres loves opengl:
  • Add attrib() method
  • The ortho() function seems broken
  • Errors with loading SVGs in P3D/P2D
  • Sketch window briefly appears on top left corner when using OpenGL
  • beginShape(POINTS) don't show up in P2D
  • fixed earlier:
  • Sketch window is not placed at correct location when running a second time
  • Full screen needs to ignore prev location setting for frame?
  • save() and saveFrame() with 2X renderers fails
  • NPE when using image() created with createGraphics(PGraphicsRetina2D)
  • Closing OpenGL sketch from the PDE doesn't stop java.exe process

New in Processing 3.0a10 Pre-Release (Jun 10, 2015)

  • breaking things for the future:
  • Added fullScreen() method to make it far easier to run sketches using the full screen.
  • smooth() and noSmooth() can only be used once per sketch, in setup().
  • Re-opened the Gates of Hell by adding chaining operations to PVector
  • Changed exec() and open() to use varargs. Changed open() to launch() to prevent problems with Python Mode.
  • Replaced --full-screen command line option with --present to untangle full screen versus the "Present" command that places blanks the rest of the screen around a sketch.
  • ortho() function is being reworked to make it compliant
  • other changes and additions :
  • Added new application and export icons.
  • Add retina/high-res display support to OpenGL
  • Add pixelDensity(2) command to enable retina or high-dpi mode for your sketch. Make things look beautiful and crisp on expensive hardware!
  • Added displayDensity() methods to get the pixel density for individual displays. displayDensity() returns the density (1 or 2) of the default (or currently selected) display, displayDensity(1) returns the density of display 1. Guess how you get the density of display 2?
  • Add useful constructors to the Int/Float/StringList classes
  • bug fixes:
  • Fix monitor numbering problems
  • Full screen doesn't work on second window w/o present mode
  • Full screen on OS X 10.9 has incorrect placement
  • "Run sketches on display" not working properly
  • Comments influencing code (preproc issues in parsing)
  • Sketch not appearing depending on arangement of external display on OS X
  • Sketch launching on second display that's not currently in use
  • strokeWeight() in setup() not working for default renderer
  • Retain original java.awt.Frame when it's available from PSurfaceAWT
  • Set frame icon images for Java2D (dock and cmd-tab)
  • Debug message showing up in 3.0a9 when dragging and dropping files
  • Rolled back to 3.0a5 version of appbundler due to crash on startup
  • This re-introduces a few bugs related to the serial library and scrolling and any other changes later than 16 November 2015
  • andres vs opengl, episode eleventy three :
  • set(0, 0, image) does not set alpha channel to opaque in P2D/P3D
  • GROUP shapes are broken in 3.0a9
  • Only a quarter of the sketch is appearing in 2x mode
  • Single transparent pixel at end of textures in OpenGL
  • Implement setImpl() instead of set() inside PGraphicsOpenGL
  • Strange extra lines with PShape 3D
  • BACKSPACE key is identified as DELETE in OpenGL renderers
  • More key issues in OpenGL
  • Set icon for OpenGL windows
  • save() and saveFrame() with OPENGL renderer fails
  • Errors in glsl code are only caught when set() is used
  • Strips when rendering spheres with lights and anti-aliasing
  • valuable contributions from the community:
  • Several Greek translation updates
  • Add i18n for Archiver Tool and missing text
  • Fix case-related bugs in Toolkit.setMenuMnemonics()
  • Contribution manager scroll bar only shows up when needed
  • Progress bar added to Contribution Manager

New in Processing 3.0a9 Pre-Release (May 20, 2015)

  • changes:
  • Implement more of the bottom half of the editor window GUI
  • Show screen dimensions in the Preferences window for display selector
  • Change how the variables/debug window works. Automatically show the window when debugging, hide when not.
  • Enabling and disabling the debugger toggles the Step/Continue buttons in the toolbar
  • Remove techie options from the Debug menu
  • Add more visual states to the toolbar buttons
  • Lots of internal cleaning
  • bug fixes:
  • Implement Cmd-Q handler on Mac OS X to shut down sketches properly
  • Changing "background color when Presenting" causes Exception
  • displayWidth and displayHeight not set properly on startup
  • Offscreen rendering broken in OpenGL renderers
  • Initial location of OpenGL window hides the title bar
  • OpenGL sketches do not terminate, have to be killed
  • Quitting P3D sketch throws an error
  • fixed in 3.0a8, confirmed later:
  • "Step" not working properly
  • Cmd-click behavior on function/variable is firing when cmd-click not pressed
  • Full screen window on second monitor without using present mode

New in Processing 3.0a8 Pre-Release (May 18, 2015)

  • Stabilizing the mess from 3.0a6 and 3.0a7.
  • If you're using Eclipse or another IDE, be sure to read the "changes" section below, for a change in how the size() command works.
  • fixes:
  • size() sometimes erratic (i.e default size used) This was often seen with large setup() functions, or on more esoteric platforms.
  • Command line "processing-java" was broken
  • Sketchbook window requires restart of Processing before updating after sketchbook location change.
  • Replace & Find was reading "Find & Replace"
  • "One file added to sketch" message when two files added
  • pop() was not implemented correctly in String/Int/FloatList
  • Errors in file name case differences not correctly reported
  • Single Frame (no screen display) PDF broken
  • "Buffers have not been created" error for sketches w/o draw()
  • changes:
  • Behind the scenes, the size() method is now moved out of setup() and into a method named settings(). The settings() is called before setup() and is the only place where size() can be used. If using Processing without the PDE (i.e. with another IDE like Eclipse), remove the size() method from setup() and instead place it like so - public void settings() { size(400, 400, P3D); // your size() command here }
  • The rest of your code remains unchanged. The PDE does this transparently, so 99% of people won't even notice this change. However, it allows us to fix (and avoid) a lot of really nasty complications that come from how Processing lets you switch between 2D drawing and OpenGL and even something like PDF with simple changes to the size() method.
  • We're trying "settings()" as the method name, but that may change in a future alpha release. Once we hit beta, it will not change.
  • For those familiar with them, the sketchWidth(), sketchHeight(), sketchRenderer(), etc methods should no longer be used. This new implementation of the settings() method is a simpler solution.
  • Added SVG Export library (works like PDF Export). This has not been tested heavily yet.
  • Replace Tweak Mode ColorSelector with JComponent version
  • Fairly major rewrite of createShape(), shouldn't affect anything, but keep an eye out for regressions.
  • Add new String/Int/FloatDict constructors that take an array for useful static/ initialization
  • Move svgz handling to PApplet, remove objz handling
  • Implement blendMode in FX2D
  • Added StringList(Object...) constructor to handle a grab bag of objects
  • Added appendUnique() to Int/Float/StringList to only add unique items to a list. Replaces the following code, making "set" operations easier - if (!theList.hasValue(value)) { thiList.append(value);}
  • Inside main(), don't set 'args' to a zero-length array if no args were passed in, instead leave 'args' null.
  • debugger :
  • Debugger "String is null" error when hitting breakpoint
  • Change "method" to "function" in a few error messages
  • Error message for incorrect function arguments is wonky
  • String concatenation mistakes produce odd error messages
  • contributed fixes:
  • Window size not passing into Tweak Mode
  • Keep the tab menu at the right-hand side
  • "Your sketch has been modified externally..." appears erroneously
  • Prevent breakpoints from causing a reload prompt
  • Added buffer to file detection time
  • contributions:
  • Preferences window fixes for Linux
  • Clear error message in Contribution Manager after retrying
  • Add SOCKS proxy support to the PDE
  • Use system proxy by default
  • opengl:
  • Moved back to JOGL instead of LWJGL for OpenGL
  • OpenGL sketches work only after running a sketch with default renderer
  • static mode - no setup() / draw() - broken in OpenGL
  • Deal with some performance issues
  • Can't run sketches with offscreen PGraphics

New in Processing 3.0a7 Pre-Release (Apr 27, 2015)

  • Fixes:
  • Fix bug that prevented the Preferences window from opening
  • Install/remove buttons not working in the Library/Mode/Tool Managers
  • Preferences window elements not sized correctly in 3.0a6
  • Fixed Find/Replace layout regressions in 3.0a6
  • Avoid minor memory leak in StringList.pop()

New in Processing 3.0a5 Pre-Release (Nov 17, 2014)

  • Changes:
  • Removed the sound library. It's now available as its own library from the Library Manager.
  • Change how languages are loaded, adding a local override.
  • Update to use JRE/JDK 7u72
  • Implement the active() method for Serial and Server
  • Detect CMYK JPEG images and return null
  • Fix XML.getString() with a default when no attrs are present at all. It was causing a NullPointerException; this also fixes getInt(), et al.
  • Fix how dictionary classes return '0' for missing values. Add optional second parameter so that it's possible to avoid the exceptions.
  • Fix how nulls are handled with Table.replace()
  • Add (simple) ODS writer to Table
  • Add addRows(Table) method (more efficient, one resize)
  • Support "header" option with ODS files
  • Show a warning when calling getVertexCount() on GROUP or PRIMITIVE shape
  • Change code completion preferences a bit. It's still turned off by default, but enable it and help us test!
  • Bug fixes:
  • Remove debug message printed to the console when the control key is pressed, when using the new editor.
  • size(640,360 , P3D) doesn't work properly (strange spacing)
  • Fix the shortcut keybindings in editor tab popup menu
  • Fix for ToolTipManager error
  • Confusing message: The shader doesn't have a uniform called "foo"
  • Exceptions in P3D / P2D not showing up properly
  • Contributed fixes:
  • Cmd + H runs sketch instead of hiding the PDE (OS X)
  • Migrate to unsynchronized data structures
  • Improve contrib manager localization
  • Fix typo in spanish translation
  • Update ECJ, use 1.7 as source and target Java version
  • Fix infinite recursion in sound library
  • Add missing generic type parameters
  • Remove unused Base.builtOnce instance variable
  • Other miscellaneous fixes
  • Moved the language stuff to its own separate folder
  • Some minor UpdateChecker refactorings
  • Minor improvements to the Contribution Manager's updates check
  • Make Cut and Copy in the edit menu active only if some text is selected
  • Fix renaming from RGB to Rgb.java and others
  • Sketches should only write to the console of their editor window
  • Extend translations and update German language
  • NullPointerException message when Server writes to a disconnected client
  • Fix check in loadShader()
  • Refined PShader uniform missing message fixes
  • Use correct parameter types in FloatList methods
  • Pass correct offset to glCopyTexSubImage2D
  • beginShape(POINTS) not working for PShape
  • Multiple blending fixes & improvements
  • Prevent lerpColor from always rounding down
  • Allow mask() with PGraphicsJava2D
  • OpenGL renderers ignore vertex winding in contours
  • NPE when calling Client.ip() after the connection has been closed
  • 'return' keyword not treated as such when followed by a bracket

New in Processing 3.0a4 Pre-Release (Sep 13, 2014)

  • Changes:
  • Contributions (Libraries, Modes, Tools) are now read from their own listing that's specific to Processing 3.
  • Made the new editor the default.
  • Turning off file watching because of errant "this sketch has changed" messages. Hopefully this will return soon.
  • Turned off code completion by default and reset its preference name.
  • Bug fixes:
  • TGAs from saveFrame() create transparent/black movies with Movie Maker
  • Fix export problem on Windows when using the new editor
  • Fix black outline around scaled fonts with the OpenGL renderer
  • Several fixes to the contributions manager:
  • Internal tweaks:
  • Optimize creation of boxed primitives
  • Add static modifier to inner classes that don't access parent
  • Fix localization in OS X (requires writing property files)

New in Processing 3.0a3 Pre-Release (Aug 27, 2014)

  • changes:
  • Removed toolbar buttons except for start/stop. This is part of a larger set of GUI changes for 3.0. At the moment it makes the design really awkward, but we needed to take the step in preparation for the larger changes to come.
  • fixes and updates:
  • The sound library is now available for 64-bit Windows and Linux. 32-bit versions are still in the works.
  • Don't write sketch.properties unless it's a non-default mode
  • Add another NaN check when sorting FloatList/Dict classes.
  • If all values were NaN, an ArrayIndexOutOfBoundsException was thrown.
  • PShape for JAVA2D (in progress)
  • Add trim() method to the XML library to remove whitespace #text.
  • Maximizing window leads to erroneous mouse coordinates
  • summer of code:
  • Fixes for mode/tool installation
  • Fix mode updating to work properly
  • Contribution manager temp folders weren't always deleting
  • Peoblems when deleting a mode
  • Autocompletion dialog box sticking
  • Line warning indicators next to scrollbar break after moving around text
  • Code completion generates wrong code
  • Code completion: Hide overloaded methods unless inside parentheses
  • Close auto-completion suggestion box when deleting/backspacing code
  • Error checking too aggressive in the current alpha
  • If 'void' left out before setup or draw, cryptic error message ensues
  • Improve how the Contributions Manager handles no internet connection
  • Added examples-package as a new contribution type
  • Contributions Managers now show specific titles
  • Add rank (starred / recommended) to contributions manager items
  • contributions:
  • Add internationalization (support for other languages)
  • Add localizations (support for individual languages)
  • Add polling to detect file system changes
  • Indent breaks when hitting enter before spaces
  • Localize status messages and contributions panel
  • Prevent adding files to read-only sketches
  • Add thread names for easier debugging and profiling
  • Fix firstLine when modifying lines above it
  • Clean up completion panel styling when using Nimbus LAF
  • Implement support for enums
  • Combining char/int/etc casts in one statement causes preproc trouble
  • Make --output optional in the command line version
  • Fix unneeded scroll bar display in code completion suggestion box
  • Replace Thread with invokeLater in PreferencesFrame
  • Initialize the ColorSelector tool on demand
  • Call applet.exit() instead of System.exit() from Present Mode's 'stop'
  • Drawing RECT PShape with rounded corners crashes the sketch
  • Corrected a typo in Tessellator#addQuadraticVertex()
  • Fix tiny typo in Table writeHTML()
  • fixed earlier but un-noted :
  • PShape disableStyle() does not work with createShape()
  • Multisampled offscreen PGraphics don't clear the screen properly

New in Processing 2.2.1 (May 20, 2014)

  • A handful of bug fixes, the most prominent rolls back a change that broke
  • PDE X and other Modes and Tools.
  • Bring back setIcon(Frame) for PDE X and others
  • Add additional code for crashing when the Mode is changed or new editor windows opened.
  • Use mouseReleased() instead of mousePressed() in the color selector, otherwise it registers the release as a click in the color window
  • Missing 'version' in contribution properties file causes NullPointerException
  • A handful of fixes to Auto Format
  • Command line tools not working on OS X due to AppleDouble file boogers.
  • Make "Archive Sketch" Tool force a .zip file extension
  • Event handling modifications in video and serial libraries w/ Python Mode
  • Permit mouse PRESS to set mouseX/mouseY
  • Fix for video: the loop() method was broken in the last release.
  • Updated reference files included in the download.

New in Processing 2.2 (May 13, 2014)

  • bug fixes and additions:
  • Re-open current sketch in new mode editor if file extension is compatible. This was a regression in 2.1.2 due to the Python Mode changes.
  • Crash in the 'recent' menu on startup
  • Avoid conflict when some goofball has installed JNA DLLs in your path.
  • Add support for "import static" syntax from Java
  • Improve error handling during Tool loading. In previous releases, an out of date QuickReference Tool was able to hang Processing. No longer.
  • Save the previous open dialog so that we return to the directory
  • "if-else" block formatting wasn't following Processing conventions
  • Tab characters not recognized or handled in the editor (since 2.1)
  • Chinese text is overlapped in Processing 2.1 editor
  • export to application:
  • The return of multi-platform export! Create applications for Windows and Linux while using OS X. Create a Linux application from Windows. Against my better judgement, we're supporting it again. It's extremely difficult, but was disappointing to remove it earlier.
  • When exporting with local Java embedded, always use that version
  • Change Windows export to use launch4j instead of our custom launcher. This will fix many, many problems, but may introduce some new ones.
  • Windows (64-bit) now creates a proper .exe instead of a .bat file
  • Exported apps on Windows 64 were not quite working correctly
  • Improved icons on Windows for exported apps
  • Add additional language and explanation to the Export dialog box
  • Make it possible to edit the background colors for full screen as well as the stop button color directly from the Export dialog box
  • Exported apps reporting as "damaged" on OS X
  • You'll have to install Xcode to remove the warnings, but it's possible
  • core:
  • Fix for splice() throwing a ClassCastException with other object types
  • Add candDraw() method to the retina renderer to fix embedding problems
  • Fix sketchPath() issue when used in other environments (i.e. Eclipse)
  • Substitute MOVE cursor with HAND on OS X
  • Allow textWidth() with the default font
  • Bug in relative moveto commands for SVG
  • Add a constructor to bind Server to a specific address
  • Fonts from loadFont() show up as blocks in P3D (regression)
  • loadPixels() problems in OpenGL

New in Processing 2.1.2 (Apr 16, 2014)

  • the pde:
  • The PDE was using 15% of CPU while just sitting idle.
  • Fix exception caused by Runner when it can't find location
  • Serial: Update to latest upstream (fixes potential port handle leak)
  • Add affordance for mode developers to run from Eclipse
  • Non-PDE extensions for modes cause a crash
  • Remove some hardcoding for .pde as extension
  • Update code signing for Processing.app for Mavericks changes
  • the core:
  • sketchPath() was returning user.home in exported apps on OS X
  • Fix bug in StringDict(Reader) that wasn't setting the indices hashmap
  • Call revalidate() via reflection so that build works under 1.6 (using 1.6 very much not supported, but we need it for regression testing).
  • Some text rendering improvements. Fairly limited in what we can fix here.
  • PGraphics.colorCalcARGB(int, float) wasn't properly capping alpha values
  • Make sure that the window background color isn't the same as the default
  • sketch background color (otherwise the sketch area isn't clear).
  • Fix for occasional NullPointerException in paint()
  • copy() under OPENGL uses upside-down coordinates for cropping
  • Video on Windows causes exception
  • Shape Font Rendering was broken with the OpenGL Renderer
  • Depth buffer shouldn't be cleared when depth mask is disabled
  • Set pixels transparent by default in P2D/P3D
  • Unwind depth sorting because it was breaking DXF export
  • Sketch hangs if sketchRenderer() returns an OpenGL renderer
  • "buffer" uniform triggers shader compilation error
  • buffer has been renamed to ppixels for shaders
  • noLoop() clears screen on Windows 8
  • Fix pixels[] array for video capture
  • fixed in earlier releases:
  • draw() called again before finishing on OS X (retina issue)
  • get() not always setting alpha channel when used with point()
  • support for geometry and tessellation shaders (on desktop)

New in Processing 2.1.1 (Feb 3, 2014)

  • Several fixes for issues in 2.1 that weren't found in the 2.1 beta release.
  • Still a number of known issues, but this cleans up several of the biggies.
  • Fixed infinite loop in Find/Replace
  • Updated to Minim 2.2
  • Minor change to bracket handling
  • On the command line version, --no-java wasn't working properly
  • get() + video requires loadPixels in P2D/P3D
  • Export to Application was broken on Windows
  • Right-click on selection was causing text to de-select on Windows

New in Processing 2.1 (Oct 28, 2013)

  • Added an option to not embed the Java runtime into an exported application.
  • This saves you the 100 MB footprint, but requires your users to install Java 7u45 or later.
  • The new println() (see the beta 1 notes) makes some old code behave a little differently. In the past, println() with an array would write out the array, one element per line, with the index in the front. i.e.: PFont.list()) would write something like this to the console:
  • [0] "Serif"
  • [1] "SansSerif"
  • [2] "Monospaced"
  • [3] "Dialog"
  • [4] "DialogInput"
  • [5] "ACaslonPro-Bold"
  • [6] "ACaslonPro-BoldItalic"
  • Now it's going to write out something like: Serif SansSerif Monospaced Dialog DialogInput ACaslonPro-Bold...
  • To get the old behavior, use printArray(). It's the price of progress, and shouldn't really "break" anyone's code since it's just writing to the console. We think the new syntax outweighs the downside of the change.
  • With arrays of primitive types (int[], float[], anything that's not an object), we've added code so that println() works as before. But we can't do the same for arrays of objects, such as String.
  • The preference for font smoothing (anti-aliasing) in the editor has been reset in this release. Fonts are unusably gross on OS X (and Linux) without smoothing and Oracle's version of Java (now in use with 2.1), and many longtime users have anti-aliasing turned off. You can still turn off smoothing in the Preferences window, but the results may be poor.
  • bug fixes:
  • Fix dataPath() problem with OS X (was breaking Movie on export)
  • Command line processing-java was broken in 2.1 beta 1 on OS X
  • Fix a situation where processing-java would return 0 instead of 1 on errors
  • Alpha values from the pixels array were coming back as 0
  • Additional UI font tweaks due to decreased legibility with Oracle Java
  • OpenGL updates:
  • Using sketchQuality() does not work properly with P3D, OPENGL, P2D
  • Fix crashes when the sketch window is resized
  • scale() wasn't affecting stroke weight in P3D
  • Add set(boolean) to PShader
  • Add PMatrix.preApply(PMatrix)
  • Updated to another version of JOGL (jogl-2.1-b1115, gluegen-2.1-b735) for OS X 10.9 support.
  • Add warning when no uv texture coordinates are supplied
  • Flicker issues when resizing P2D/P3D/OPENGL

New in Processing 2.1 Beta 1 (Oct 21, 2013)

  • major changes:
  • Java 7 is now used across all platforms. On Mac OS X, we're now embedding Java 7u45.
  • Major changes have been made to Export to Application.
  • Read here: http://wiki.processing.org/w/Export_Info_and_Tips print() and println() now make debugging fun! They can now take any number of parameters, which means that code like:
  • println(x, y, mouseX, mouseY); will print out 3 5 142 220
  • No more println(x + " " + y + " " + mouseX + " " + mouseY); that was for suckers!
  • A new serial library has been added! The results of Gottfried Haider's
  • Google Summer of Code project now replaces the old serial library.
  • And everyone should wish Casey Reas happy birthday today!
  • This release is my birthday present for him. What did you get him?
  • Here's a more detailed rundown of what else is in this release:
  • new features and additions:
  • For people using Eclipse, the new print() and println() methods add some quirks because of how println() works for arrays in previous versions of Processing. When printing an array, you should instead use the new printArray() function, which works the same as the old println().
  • This will help avoid the compiler warnings with Eclipse and others.
  • In the PDE, this should be transparent, because warnings are not shown.
  • Update the JavaDoc, remove java.* package prefix ugliness. Also link out to the online version of the Oracle documentation.
  • Major work on the source and the build scripts as we completed the transition to Java 7, and away from Apple's deprecated Java 6.
  • Incorporated a version of Oracle's appbundler for OS X build. Made heavy modifications to the original version to add features and simplify.
  • Culled un-needed resources from the Java 7 runtime to save space.
  • Unfortunately Java 7 is also much larger than Java 6, so the size change isn't as considerable as we would hope.
  • Remove unused/outdated 'Mangler' Tool example
  • Remove video library for other platforms in download. This saves significant space because we're not doing cross-platform export anymore.
  • Update apple.jar file with new version
  • Update build instructions on Github
  • Many changes to the Supported Platforms page
  • Updates to the Export page to cover changes in this release
  • Removed the 32- and 64-bit selector from the Preferences on OS X.
  • Java 7 on OS X only supports 64-bit, so 32-bit is no longer available.
  • editor fixes:
  • Deal with null/missing folders for Tools and Modes
  • Non-compliant libraries cause crash on "Add Library"
  • Bad tools could bring down the environment
  • Open new PDE maximized when current PDE is maximized
  • cmd-left was bringing up the text area popup, causing X Mode weirdness
  • core bug fixes:
  • This was an Apple bug, and is fixed by our switch to Oracle's Java 7.
  • Background color for present mode had no effect
  • Add desktopPath() and desktopFile() methods for testing (not finished)
  • Unicode NLF causing problems in XML files
  • Fix image transparency in PDF output
  • Java2D images crash after being resized
  • Constrain lerpColor() between 0 and 1. Unlike lerp(), where it might make mathematical sense, going outside the boundary colors produces really messy results.
  • JSONObject/Array.format(-1) not working on embedded JSONObjects
  • Fix insertRow() bug with Table
  • opengl updates:
  • Updated to JOGL 2.1.0
  • Fixed inconsistency with P2D and resetMatrix()
  • Deal with text rendering problems
  • Fix textSize() problem with P2D
  • Repair incorrectly applied transformations in retained mode
  • push/popStyle() was causing color problems with P2D/P3D
  • Child SVG elements were misplaced when rendering with P2D/P3D
  • SUBTRACT and DIFFERENCE blend modes are swapped
  • Throw an error for textureMode(REPEAT)
  • Vertex codes were not being properly set in P2D/P3D
  • Some box normals were inverted
  • new serial library:
  • Incorporate the new serial library. Woohoo!
  • 64-bit version of serial library
  • Closed several serial bugs because they're no longer relevant:
  • font fixes and changes:
  • Add ability to change the editor (and console) font from a menu in the Preferences window.
  • Add ability to change the console font size from the Preferences window.
  • Allow editor and console font changes without restart.
  • Anti-aliasing fix for the editor line status.
  • Change to bold instead of semibold version of Source Code Pro.
  • The semibold wasn't mapping properly as the same family.
  • Use the same font in the console as the editor.
  • Fix Windows/Linux console font issues.
  • movie maker:
  • Fix default gamma issues inside MovieMaker by adding extra atom TGA files cause Movie Maker to not work properly
  • Fix file selection dialog with MovieMaker (instead of the nasty
  • Swing-based version that was in use)
  • Add support for many other image file types to Movie Maker

New in Processing 2.0.3 (Sep 6, 2013)

  • blendMode() change causes OpenGL renderer to be very slow
  • Serious OpenGL performance issues on OS X, this was fixed with the JOGL update in 2.0.2, but we neglected to note it.
  • P2D low quality text rendering
  • Fix issues with slow text rendering and OpenGL
  • Corrupted text with large font and OpenGL
  • loadFont hangs on Processing 2.0 with any OpenGL renderer
  • Rendering artifacts on the diagonal line (topleft to bottomright) in P2D
  • loadShape doesn't load OBJ files in subdirectories properly
  • more OpenGL issues fixed by JOGL or newer drivers
  • Vertical offset when sketch height is indivisible by 2
  • ellipse() causes RuntimeException: java.lang.OutOfMemoryError
  • beginShape()...endShape() lines look wrong at joins/caps with P2D
  • Problem with bit shifting and video
  • Copy doesn't produce a true copy with P2D and P3D renderers
  • Additional improvements to memory handling with images
  • Additional memory handling changes for render buffers
  • PShape does not draw arc properly
  • PShape style is not restored after calling enableStyle in P2D/P3D
  • Other bug fixes:
  • Fix options parsing on loadTable() to handle spaces.
  • PVector.angleBetween() returns 0 for 3D vectors whenever x and y are both 0

New in Processing 2.0.2 (Aug 15, 2013)

  • Bug fixes:
  • Fix Windows issues with associating .pde files
  • Present Mode does not work properly on Windows
  • pixels[] array not updated with Capture and P2D/P3D
  • Unable to get TAB key event with P2D/P3D renderer
  • Setting an INT4 uniform in PShader causes an out of bounds exception
  • Fix "less less" typo
  • Slash breaks syntax highlighting when spaces are involved Fix from Github user hamzaissa - thanks!
  • selectInput() in exported OS X sketch treats .app package as a folder
  • Code with a NUL character causes an error Also remove NUL characters when loading PDE files
  • Allow delete of files in unsaved sketches
  • UnsatisfiedLinkError was causing huge/unreadable message
  • selectInput() in exported OS X sketch treats .app package as a folder
  • Retain blendMode() between frames
  • Contribution managers:
  • Support multiple categories for libraries
  • Notify users that Modes and Tools require restart.
  • Change the location of the manager download to something more stable.
  • Restrict library categories to the ones in the document. If it's not correct, shows up as 'other'.
  • Catch Errors (not just Exceptions) when loading libraries, modes, and tools. Handles UnsupportedClassVersionError and other quirks.
  • Redo handling of "old" versions of contributions.
  • Update example list when library is installed
  • Data, data, data:
  • Error in IntList and FloatList insert()
  • Add a sort() method to Table.
  • Implement version of Table that takes a dictionary file. Syntax is: Table t = loadTable("bigdata.tsv", "dictionary=bigdata-dict.tsv") This allows you to set the data type of columns before loading, which provides much better performance and lower memory usage.
  • Constructing table from an Iterator is missing
  • Add sum() to IntList and FloatList
  • When using increment() on IntList, make sure the index exists and automatically resize the list if necessary. This is more in keeping with increment() in the Dict classes.
  • getSubset() broken in IntList, StringList, and missing from FloatList
  • Add join() method to Int/Float/StringList
  • Add getContent(defaultValue) to XML
  • Add isNull() (returns boolean) to JSONObject/Array
  • Add getXxxx(xxx, defaultValue) methods to JSONObject/Array
  • Internal changes you'll never notice... unless I broke something:
  • Add an exception wrapper for startup, hopefully we can catch/debug more "Processing can't start!" issues with this.
  • Update JNA from 3.2.4 to 3.5.2.
  • Updated JOGL to 2.0.2.
  • Added methods to move files to Trash/Recycle Bin where available.
  • Implement basic proxy server support for update checking and the contribution managers.
  • Basic getShape(ch) implementation for font glyph shapes. Not finished and (therefore) not yet documented.
  • Change QUAD_BEZIER_VERTEX to QUADRATIC_VERTEX to match the API call (because this lives inside PConstants).
  • Add retina switch for PApplet to set useActive with OS X and 7u40. Prevents speed/performance issues with old sketches on retina macs.
  • Add error message for raspberry pi (and others?) about int buffers
  • Changes:
  • Experimental Mode has been removed from the default download, so that it can be updated more frequently. Install it and help us test what will become the 3.0 release of Processing!
  • Add "Processing Foundation" to the Help menu.

New in Processing 2.0.1 (Aug 15, 2013)

  • bug fixes:
  • Modes, Tools, Libraries not moving properly on Windows
  • Undo seems to not be going to the right location (now with example)
  • getVertex() trying to get three values when no Z-coord is available "PShape getVertex() not implemented properly for SVG files"
  • Fix typo in default printProjection() method
  • additions:
  • Add error message for that reports what line was bad while parsing a table (Otherwise confusing ArrayIndexOutOfBoundsException while parsing bad CSV.)
  • Added option to remove the background image at the top of the window.

New in Processing 2.0 (Aug 15, 2013)

  • bug fixes:
  • Example window has the Java application icon
  • The update checker sometimes insisted there were updates, even though there were not, due to a build problem.
  • Removed the 'modes' folder from the sketchbook listing
  • saveJSONArray() loops forever, triggers error
  • patch to make font textures smaller in P2D/P3D
  • .png data written when .jpg file specified with save/saveFrame()
  • remove() broken in the List classes
  • PGraphics objects that used JAVA2D weren't updating when used with OpenGL
  • P2D/P3D sketches don't get focus until clicked
  • changes:
  • A handful of tweaks to smooth out the 2.0 user interface. Incorporates some of the suggested user feedback, while trying to preserve the look & feel of our PDE design.
  • Added built-in fonts (Source Sans and Source Code from Adobe) as the default font for the UI and editor. As usual, the editor font can be changed in preferences.txt. And if you already have a preferences.txt file, the new font won't override it. Fonts for GUI elements can be modified in lib/theme.txt, but be careful with those, and don't complain if/when they break.
  • Added several additional functions for data classes.
  • Changed how null values were handled with binary tables. If anyone was using the (undocument) .bin format for Table, you'll need to re-save your data.
  • Changed XML.toString() (what's called when you print() or println() an XML object) to just send a single line of text instead of a full XML document with a header. Use format(numSpaces) if you want a properly formatted document with declaration at the top.

New in Processing 2.0 Beta 7 (Dec 8, 2012)

  • [ changes ]
  • Removed all imports that aren't covered in the Processing reference. If you use java.awt, java.util, or other classes in your sketch, you will need to add an import line to the beginning of your sketch.
  • Only the classes that are covered in the reference (HashMap, ArrayList, and some others) are now imported by default. This has been done to improve
  • overall cross-platform parity and to avoid users unknowingly adding Java classes, and then the sadness that comes when switching to Android or JavaScript modes.
  • The list of imports is now hard-coded (no longer read from preferences.txt)
  • and includes the following:
  • import java.util.HashMap;
  • import java.util.ArrayList;
  • import java.io.BufferedReader;
  • import java.io.PrintWriter;
  • import java.io.InputStream;
  • import java.io.OutputStream;
  • import java.io.IOException;
  • If we're missing anything that's not covered in the reference, please let us know via the bugs database.
  • A new "experimental" mode has been added. It's the start of combining two
  • of our Google Summer of Code projects (DebugMode and XQMode) to enable a debugger and on-the-fly error checking. We're including it in the release so that folks can test it out and let us know how it's doing. The interface still needs work and its innards may be a bit buggy, but it represents some exciting upcoming improvements for the PDE.
  • hint(ENABLE_ACCURATE_2D) has been renamed to int(DISABLE_OPTIMIZED_STROKE) to better reflect what it actually does. Reference has been added.
  • OpenGL drawing is significantly faster when the fill and stroke of a shape is drawn separately. This leads to visual artifacts on shapes where both fill and stroke is enabled (not a great idea in 3D anyway), so this option fixes the visual artifacts at the expense of speed.
  • Sketch names can no longer begin with underscores (fixes an Android compatibility issue). This was changed in recent releases, but missing here.
  • Set quality level higher when exporting JPEG images. This will result in larger JPEG files with save() and saveFrame(), but the default quality setting in the past was unacceptable for many/most projects. See the bug report link for how to implement in case you want to set the quality lower (or even higher) than the new default.
  • Table row iterating syntax has changed. This code:
  • for (TableRow row : table) { ... }
  • has now changed to
  • for (TableRow row : table.getRows()) { ... }
  • (This may change to rows() on the next round, pending other API tweaks)
  • Change default for shift-backspace to just be backspace. To change it back, set editor.keys.shift_backspace_is_delete=true in preferences.txt.
  • Implement clip() and noClip() to set the clipping region.
  • Added blendMode() feature.
  • Add different styles of arc drawing.
  • Added XML.getLong() (also updated Android)
  • Implement back-buffer sampler in OpenGL renderers.
  • Change how get(x, y, w, h) was handled with offscreen areas.
  • Make key and mouse events interleave, also improve threading.
  • Changed event constants to PRESS, RELEASE, CLICK, DRAG, MOVE, ENTER, EXIT instead of past-tense versions of the same.
  • Removed mask(int[]) from PImage.
  • Implement postEvent() to put new events on the queue.
  • Add mouseEntered/Exited on the desktop.
  • Change output from processing-java to be UTF-8 encoded.
  • Remove requirement for Google APIs in Android mode.
  • [ bug fixes ]
  • mouseButton not being set properly in mouseClicked.
  • mouseButton is 0 in mouseReleased() on OS X
  • mousePressed() coloring now different from mousePressed
  • Still not necessarily perfect, but it's a big improvement.
  • Note for people implementing their own Modes: FUNCTION1 and FUNCTION2 have now been added for functions with parens.
  • Prevent errors on first line of a new tab from highlighting the last line of the previous tab. In particular, a single letter on a new tab was highlighting the last line of the tab to its left.
  • Android debug information wasn't being passed through to the console. In addition, on Windows, error reporting wasn't working properly (couldn't find the right line or report the error correctly).
  • Fix ugly results from resize() command on PImage:
  • P2D/P3D PGraphics buffer failing to draw if larger than main surface.
  • Fix double error report when textMode(SCREEN) was used:
  • textMode(SCREEN) has been removed from Processing 2.0.
  • textMode(256) is not supported by this renderer.
  • image(pgraphics, x, y, w, h) was only drawing once when shrinking.
  • beginShape(QUAD) was not working with Java2D.
  • Relative coordinates not updated properly on closepath with SVG files.
  • PShape and lights results in more lit vertices.
  • Implement anisotropic filtering when using OPENGL.
  • Update reference for begin/endContour.
  • Fix "expecting EOF, found 'import'" error on previously working sketch.
  • Prevent potential race condition when resizing sketches.
  • Mode detection wasn't properly ignoring code inside comments.
  • Fix error line numbers from command line version to count from one instead of zero, so that they're compatible with other systems.
  • Sketches exported to Linux weren't passed the command line arguments
  • "electricScroll" feature was causing weird jumps when double-clicking
  • Crash during library download was causing empty library list
  • In the net library, clientEvent() called even w/o data from server
  • Add Server.ip() method to get the IP address of the host machine.
  • Modify “Copy as HTML” to add second HTML data type when writing the clipboard
  • Fix contributed by Ostap Andrusiv--thanks!
  • Shaders are passed wrong defaults when calling "filter" on a PGraphics object
  • beginContour() behaves differently in immediate and retained modes
  • P2D/P3D crashes when trying to display unicode text
  • Fix for PMatrix3D.mult() when vectors are identical
  • Curves weren't rendered seperately when P3D or P2D specified.
  • FBO handling in PGL is not transparent.
  • Use of pixels[] array breaks after resize in OpenGL.
  • No stroke with OpenGL sketches on a 2007 Mac Mini (GMA 950)
  • ortho() displays strange line widths.
  • Resizeable frame crashes sketch with AMD video card.
  • begin/endShape with a single vertex causing crash on P2D/P3D.
  • Using a PGraphics as a texture produces visual artifacts.
  • [ fixed earlier / cleaning ]
  • When turning smoothing on, internal lines of shapes are visible.
  • textAlign(CENTER) with P3D and OPENGL produces messy result
  • Signature issue on contributed libraries affects unrelated OpenGL sketches
  • Implement efficient version of copy() in PGraphicsOpenGL.
  • copy() does not update the screen with OpenGL.
  • strokeCap() and strokeJoin() for use with OPENGL.
  • Fix inconsistent anti-aliasing with OpenGL.
  • noCursor() + OPENGL = won't get past setup()
  • set() requires updatePixels() with OpenGL.
  • Share interface for 3D across desktop and Android.
  • Distortion of 2D shapes when sphereDetail() is used.
  • OPENGL renderer stops rendering after text is written using textMode(SCREEN)
  • Support 'black' as color for SVG files (fix from PhiLho)
  • Catch sun.dc.pr.PRException?
  • Image created with img.get() works incorrectly when using filter()
  • copy(image with transparency) doesn't keep the transparency at start up.
  • Defects in the tessellation of SVG shapes in A3D
  • Blacked-out screen when restoring Android app from background.
  • Excessive rotation of application causes memory to run out
  • Should alpha PImage stuff use a non-4byte config?
  • Rounded rect support on Android

New in Processing 2.0 Beta 6 (Nov 3, 2012)

  • [ bug fixes ]
  • Command line support was broken in 2.0b5, with an error about
  • processing-java ClassNotFoundException: BatchCompiler
  • On Mac OS X, you may need to re-run the "Install Command Line" tool.
  • Make sure the sketchbook is being picked up on the command line, so that imported libraries are handled correctly.
  • Import statements were executed within multiline comments.
  • http://code.google.com/p/processing/issues/detail?id=911
  • Editor not responding properly if the "External Editor" preference had been enabled with a previous release.
  • A number of OpenGL fixes to better handle older chipsets, like the GMA 950 (found on lots of older Mac Minis and similar hardware).
  • Reverted back to an older version of the JOGL library to prevent
  • issues with sketches locking up. In particular, this should fix
  • sketches that use the video library:
  • Icon loading was causing an error if you used a package for your code.
  • No longer using --request on OS X 10.6, since it's not available.
  • Avoids a harmless warning message on the console when running a sketch.
  • [ changes/additions ]
  • Added an option to Preferences to enable/disable advanced input method
  • support to handle complex scripts like Japanese, Korean, or Chinese.
  • Add option for blinking and/or block caret in the editor. To disable
  • caret blinking in the text editor, add this line to preferences.txt:
  • editor.caret.blink = true
  • Or to just a block caret, use this:
  • editor.caret.block = false
  • [ internal ]
  • Removed applet-related preferences, and the 'applet' subfolder in the
  • source/distribution.
  • Removed the old 'cmd' folder from the source/distribution
  • Preferences are now written in sorted order to make it easier to handle
  • comparisons or other debugging.
  • Major change to handle how the 'lib' folder is found, hopefully does a
  • better job with command line support.

New in Processing 2.0 Beta 5 (Nov 3, 2012)

  • [ bug fixes ]
  • Libraries not installed through IDE had blank names.
  • mouseButton not being set properly on Windows (and probably Linux).
  • Console disappearing with increased editor font size.
  • [ changes/internal ]
  • Change how modes are set up so that XQMode, our Google Summer of Code
  • project can work properly.
  • Implement multiple sizes of icons for PDE and core. This improves
  • the quality of the icon seen on Windows and Linux attached to frames.
  • http://code.google.com/p/processing/issues/detail?id=632

New in Processing 2.0 Beta 4 (Nov 3, 2012)

  • [ additions & removals ]
  • Command line support is now available for Java mode. On Windows and Linux,
  • use the processing-java program. On Mac OS X, there's an option in the
  • Tools menu to install the command line tool.
  • Build and export options should even work in headless mode when enabled
  • (no guarantees, but simple test results were promising).
  • Android and JavaScript mode are not supported, contributions are welcome:
  • Added a Tool for Mac OS X to help set up serial port. Using serial on
  • OS X requires some incantations on the command line, and this prompts for
  • an administrator password and takes care of them for you. The commands
  • involve creating a folder and setting a few permissions. If everything
  • is already set properly, the Tool will not be present in the Tools menu.
  • With the arrival of command line support, the misunderstood and sometimes
  • maligned "Use External Editor" option has been removed.
  • Fix several problems introduced by Apple's recent Java "update".
  • Apple's most recent Java update may render older versions of Processing
  • completely unusable, it's not quite clear yet.
  • [ bug fixes ]
  • Fix the exceptionally slow startup (a 5 second delay) in recent releases.
  • Find & Replace over multiple tabs (thanks to Manindra Moharana for the patch!)
  • calling jump() resets movie speed
  • Fixed sketch renaming regression in underscore handling
  • Fix library manager temporary folder problem on Linux)
  • Default sketchbook folder was going to wrong location on Linux
  • mouseButton wasn't getting set on mouseReleased()
  • [ technical updates ]
  • JOGL has been updated, which may help iron out some GL quirks.
  • Change all build.xml files to use Java 6 as both source and target
  • (avoids Java 7 warnings during build).
  • Updated ecj.jar to use jdt-core.jar... This is a larger file but were
  • hoping that this would get our GSoC project "XQMode" working without
  • the need for patches. Sadly that's not the case, but stay tuned.
  • [ known issues ]
  • Fewer exclamation points will be used to introduce future releases.

New in Processing 2.0 Beta 3 (Nov 3, 2012)

  • [ major fixes ]
  • registerMethod("keyEvent", ...) not calling key event methods.
  • "Processing is damaged and should be put in the trash" with 2.0b2.
  • Apple's asinine code signing strikes back!
  • Restore deprecated versions of getFont() and getImage() to address
  • library compatibility issues. The similar getBitmap() and getTypeface()
  • methods on Android will not be restored.
  • [ minor fixes ]
  • Changing the default display in Preferences does not reset editor
  • location, so it appears to have no effect.
  • Remove bad cast in PGL during error reporting.
  • Make Mode menu into a radio button, so it cannot be de-selected
  • [ changes and additions ]
  • Show error message when using createGraphics() with P2D, P3D, or OPENGL
  • and the main drawing surface is not an OpenGL renderer.
  • Make file selectable from the OS X menu bar. Thanks to Hansi for the
  • patch. Note that this only works for sketches that have been saved.
  • Added registerMethod(keyEvent) to Android, though motion and mouse
  • events are still unavailable.
  • Cleaning up the internals of Preferences and untitled sketches.
  • Fingers crossed that these don't give us last-minute regressions.

New in Processing 2.0 Beta 2 (Nov 3, 2012)

  • [ fixes and updates ]
  • Libraries with using key events were reporting: "java.lang.IllegalArgumentException: argument type mismatch" in beta 1, this is now fixed.
  • Added hint(ENABLE_STROKE_PURE) to deal with Java 2D regression.
  • Fix for stroke with beginShape(TRIANGLE_FAN)
  • hint() documentation now updated (except for the hint above).
  • Using ortho() breaks stroke rendering
  • [ fixed earlier ]
  • POINTS mode vertices are huge
  • Potentially insufficient ellipse detail with P3D/OPENGL when scaled
  • Implement support for complex shapes when using the OpenGL renderer
  • modelX/Y/Z broken when aiming a camera
  • OpenGL broken with JDK 7 on OS X, fixed with new JOGL updates
  • Problems with OpenGL example sketches
  • Memory improvements for updatePixels() with OpenGL (P2D and P3D)
  • Text characters showing up as opaque rectangles
  • Changing framerate causes program to crash with P2D in 2.0a6
  • [ android ]
  • Updated examples from Andres and categories in the examples browser.

New in Processing 2.0 Beta 1 (Nov 3, 2012)

  • [ changes ]
  • Require 10.6.8 as minimum Mac OS X system version.
  • Change name from "Standard" to "Java" mode.
  • Save opened/closed state of entries in the examples browser
  • Lots of internal changes to loadShape() and PShape.
  • Work on making API more generic and consistent for cross-platform use.
  • Font PFont.getFont() -> Object PFont.getNative()
  • Typeface PFont.getTypeface() -> Object PFont.getNative()
  • Image PImage.getImage() -> Object PImage.getNative()
  • Bitmap PImage.getBitmap() -> Object PImage.getNative()
  • beginGL() and endGL() are gone, and beginPGL() and endPGL() exist in their place. The PGL class is a layer that lets us talk to
  • OpenGL in a way that's cross-platform and consistent. It also has many GL calls for people who want to access GL directly.
  • New syntax introduced for libraries and registered methods.
  • Documentation coming soon.
  • [ bug fixes ]
  • Handle dimming the Find/Replace buttons.
  • Any double-click inside Examples window opened the last selection on Windows
  • loadImage() with spaces in path broken with exported applications on OS X
  • Minor speed fix for PVector.limit()
  • Jagged / Glitchy JAVA2D shape strokes in Java 1.6 due to recent change introduced in Java update from Oracle.
  • GL Android sketches halting after rotation.
  • [ known issues ]
  • createShape() is not implemented with the default 2D renderer.
  • see the Changes page on the Wiki for more.

New in Processing 1.5.1 (Nov 3, 2012)

  • [ editor ]
  • Windows splash screen for version 1.5 says "1.2"
  • "Import Library" was broken for several built-in libraries.
  • Fixed broken update checker.
  • Reverted to the old shell script on Linux.
  • Applets exported on Windows can't find files in the data folder.
  • File > New and Command-N stop working on OS X after running a sketch
  • [ core ]
  • Reverted to the old createFont() behavior, where native fonts will be used with createFont() in more situations.
  • [ svg ]
  • Improve handling of transformations in SVG files.
  • Fix bug in SVG parser for shorthand curves (T/t and S/s)
  • Prevent shape(PshapeSVG) from failing if SVG contains
  • Fix misshapen quadratic bezier curves when drawing SVG files.
  • [ examples ]
  • HsvSpace example sketch in 1.5 download requires additional import
  • Obsolete Network > HTTPClient sketch

New in Processing 1.5 (Nov 3, 2012)

  • [ pde ]
  • A new version of the reference and examples have been posted online.
  • Upgraded to Quaqua 7.3.4 on OS X. Fixes mode menu checkbox on OS X
  • Added a fix for text focus handling in the editor (0195 problem) File -> Save no longer stops the running sketch
  • Fixed a bug in the LoadFile2 example
  • Shift-indent without selection increases indention
  • Allow more than one sketch to run at a time (problem in 0194/5)
  • Fix caret bug leading to slow degredation of the PDE.
  • Fix Color Selector to be more efficient with many sketch windows.
  • Fix sketch marked as modified too aggressively
  • Prevent "save" from clearing undo information
  • Rename/Save As doesn't properly have its focus set (fixed in 0195)
  • [ peter lewis ]
  • Several fixes for text selection and editing, provided by a Mac software developer hero of my youth, Peter N Lewis.
  • Use Selection For Find
  • Double-clicking whitespace selects adjacent chars
  • Find/Replace all around very ugly, fix it up
  • Several additional tweaks
  • [ core ]
  • Fix minor native fonts issue.
  • [ android ]
  • Workaround for loadImage(url) bug in Google's Android source.
  • Issue tracked down by psoden. (Thanks!)
  • Build an interface for control of permissions on Android (earlier)
  • Implement createGraphics() (completed in earlier releases)
  • Android 0192 sketch in static mode crashes on exit (fixed in 0193 or so)