Sie sind auf Seite 1von 151


3 (REV 0255) - 7 November 2016

Lots of fixes to the Contribution Manager and a couple OpenGL tweaks.
[ contributions manager ]
+ If prettyVersion isn't present, just use version number
+ Ensure that 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
[ another fix ]
+ Warn user to restart browser when it hangs on macOS
[ opengl improvements ]
+ Automatic detection of POINT and LINE shaders fails
+ Show warning when frameRate() less than 1 is called with P2D and P3D
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.2.2 (REV 0254) - 30 October 2016
Lots of bug fixes.

[ 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
1.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)
+ NPE thrown when using textMode(SHAPE) with a .vlw font
+ 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

[ andres can do anything ]

+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.2.1 (REV 0253) - 19 August 2016
Fixes for a couple major bugs that showed up in the last release.
[ 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.2 (REV 0252) - 16 August 2016
This release includes a handful of fixes to deal with startup bugs,
plus several internal changes for how Modes are implemented.
For those semantic versioning enthusiasts keeping track at home, the version
has been bumped from 3.1.x to 3.2.x to denote the internal API changes.
[ 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 modes ]
+ 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 from Tsuyoshi Fukuda (tyfkda) ]
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.1.2 (REV 0251) - 29 July 2016
Happy Fathom Fiesta Day! We'll be taking the afternoon off to enjoy
the summer, maybe you should take the afternoon off and dive into
a new Processing release?
[ pde fixes ]
+ NullPointerException in 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.
+ 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
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.1.1 (REV 0250) - 16 May 2016
Happy Day-after-my-Mother-in-Law's-birthday! (After the last two releases
happened on holidays, I'm just gonna keep pushing the festive thing. Hard.)
Most importantly, this release fixes a handful of bug fixes for regressions
(a smart-sounding word for making dumb mistakes) in the last release,
plus a handful of other improvements we picked up along the way.
[ 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?)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.1 (REV 0249) - 8 May 2016
Happy Mother's Day! I celebrated by kicking off a Processing release
while my beautiful wife and daughter took a well-deserved nap.
This release includes several bug fixes, while some of your donation dollars
were fed through Jakub Valtar to produce bug fixes and code improvements,
including some serious reworking of the error checker. Meanwhile, the rest
of the community pitched in with several additional fixes to keep this
caravan rolling, and Gottfried brought up the rear with fistfuls of

improvements for Raspberry Pi and ARM support.

[ contributed pde fixes ]
+ Grab bag of smaller, mainly ARM-related updates
+ IDE code disappearing due to a concurrency bug
+ Fix non-ARM Linux deb build process
+ Sketchbook window shows "Empty sketchbook" when sketchbook is... empty
+ Change the command line version on Windows to use the default encoding
+ Add support for symlinks to exported applications in Linux
+ Added Ukrainian localization
+ Load fallback font for Chinese, Japanese and Korean
+ Fix hint text for toolbar buttons when Chinese, Japanese, Korean in use
+ Added readBytes(max) to net library
+ Added readBytes(max) to serial library
+ Improve error message "The nested type cannot hide an enclosing type"
+ Multi-line comments ending in '**/' cause ArrayIndexOutOfBoundsException
[ jakub edits the editor ]
+ Update app to Java 8
+ More Java 8 updates

+ Update minimum JRE version for Windows
+ Update JDT to 4.5.2
+ Java Mode cleanup
+ Several bugs with tabs not working properly
+ File paths not decoding properly, causing a NullPointerException
in on startup for some people
+ Java Mode refactoring
+ Fix jump to variable declaration
+ Numbers in scientific notation not recognized as floats in 3.0
+ Adding .java files to sketch causes the Error Checker to weird out
+ "Show usage..." does not locate keywords on correct line
+ Threading fixes
+ Move PDEX listeners from JavaEditor to PDEX
+ control-clicks misbehaving
+ Fix listeners not firing on first preprocessing run
+ Remove some unnecessary calls from rename
[ gohaiv6 ]
+ Add automatic mipmap support to GLES2
+ Add a few IO library examples
+ Be more verbose with drawExceptions with cause null

+ Ignore memory options when exporting for ARM
+ Update JNA to 4.2.0
+ Add two Raspberry Pi related fixes to JOGL
[ core ]
+ Float/IntDict: minIndex() and maxIndex() return -1 when count is zero,
rather than throwing an exception
+ Couple bug fixes for sorting Float/IntDict
+ Add optional "stable" parameter to the Float/IntDict sort methods
+ Drastic (2x) performance increas for sorting Float/IntDict
+ Added print() and write(PrintWriter) methods to Table/TableRow
+ Several JavaFX fixes
+ cursor() and noCursor() not working on FX2D
+ Make sure PImage.parent is set in loadImage()
+ Change convention for directional lights in OpenGL-Binding for GLSL
+ Internal texture copy does not update immediately in GL
+ Font corruption issue in OpenGL
+ setStroke() does not work with imported OBJ Pshapes
+ blendMode() resetting with getGraphics()
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0.2 (REV 0248) - 13 February 2016
Happy Valentine's Day! Nothing says "I LOVE YOU" like a bouquet of bug fixes.

And nothing says, "I LOVE YOU TOO" like the sampler box of contributed fixes
and pull requests that the community has put together for me since 3.0.1.
[ editor contributions ]
+ Add "full screen" option to the Editor on OS X
+ 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.
+ Actually require OS X 10.8.5 (was set to 10.7). The Wiki said 10.8.3
was required for 3.0 (it is), but has since been updated to 10.8.5.
If you're gonna run Mountain Lion, at least make sure he's patched.
[ graphics contributions ]
+ Fill out the Javadoc for PMatrix
+ Have PSurfaceFX pay attention to the setVisible argument
+ Use xdg-open in PApplet#launch(String)
[ moar 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)
[ Andres fires an arrow of love into the cold heart of OpenGL ]
+ 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
[ "Jakub" is just Czech for "cupid" ]
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0.1 (REV 0247) - 23 October 2015

Lots and lots of bug fixes.

[ graphics fixes ]
+ 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
+ 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 graphics fixes ]
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0 (REV 0246) - 30 September 2015, 3pm ET
This one is huge.
This document covers (in detail) the individual changes between releases.
For an overview abut what's new, different, and exceptional in 3.0, read:
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
[ 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: the checking and completion story ]
+ error checker/suggestions fixes
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0b7 (REV 0245) - 22 September 2015
It's 8:57pm and Jakub and Ben are still holed up at Fathom's studio in Boston.
Ben is wishing he was Jakub's age, as his wrists, neck, and back all feel
like a bag of broken pretzels after several hours/days/weeks/months of coding.
A bleary-eyed Jakub emerges from deep inside the error checker and completion
code, removes his headphones and grunts, "I think it's working."
[ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

PROCESSING 3.0b6 (REV 0244) - 11 September 2015

And I beheld when he had released the sixth beta, and, lo, there was
a great earthquake; and the sun became black as sackcloth of hair,
and the moon became as blood.
Aside from bug fixes, the FX2D renderer has received a lot of attention.
On the plus side, it's working really well. On the minus side, we're giving
up on making it the default for 3.0. The underlying JavaFX technology it uses
is just not ready for our use. It is, however, super fast and makes great
looking 2D sketches on retina devices. But it can be a little balky so we
don't want it to be the first experience that beginners have with Processing.
Especially if you're doing 2D on a retina Mac, you should definitely try FX2D.
We're at the limit of what we can do performance-wise with the default
(JAVA2D) renderer, so if you're having performance problems, try FX2D.
[ bug fixes and improvements ]
+ Deal with ConcurrentModificationException in Editor
"Error repainting line range" and ConcurrentModificationException
+ Major surgery performed to drastically reduce the memory footprint
and startup time for individual editor windows.
+ 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 by
[ Jakub won't be here forever, but his contributions are eternal ]
+ 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?
[ Dr. Colubri, I presume? ]
+ 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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0b5 (REV 0243) - 24 August 2015
Fixing a handful of regressions in beta 4, and clearing out some of the
nooks and crannies as people report issues with the default download.
[ 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.
If you're a beginPGL() and endPGL() fan, see the updated docs:
+ 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 fixe$ + improvement$ ]

+ 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 disapear 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0b4 (REV 0242) - 17 August 2015
Fixes for several long-standing bugs, plus some internal changes
to make the code slightly more usable by contributors.
For Tool and Mode developers, several functions have moved out of and into the Messages and Platform classes.
For instance, Base.isWindows() has moved to Platform.isWindows()
(seems almost logical, right?) We're not keeping deprecated versions
of these functions around since we're breaking other things in 3.0.
Library/Mode/Tool authors, there's a section for you at the end of
this page:
If there's anything that's not covered properly, please file an issue:
Meanwhile, Jakub Valtar is holed up at Fathom in Boston, fixing all of
the bugs. See "your contributions are funding graphics fixes," below.
[ 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

+ dataPath() not working when app is not run from app dir on Linux
+ "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 changes ]
+ 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)
+ Improve OpenGL extensions checks on OS X
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0b3 (REV 0241) - 11 August 2015
You get a beta! YOU get a beta! *YOU* get a beta! Everybody gets a beta!
[ bug fixes & changes ]
+ Prevent 'examples' from showing as a folder in the sketchbook window
(instead only show it in the Examples 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0b2 (REV 0240) - 9 August 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,
it would report "done exporting!" but nothing had actually happened.
+ Prevent Export with examples and untitled/unsaved sketches
+ Links in error bar are not selectable nor clickable
[ internal/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 earlier ]
+ blend() and copy() are not pixel accurate for copy/scale
Fixed somewhere between 0179 and 0184
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0b1 (REV 0239) - 6 August 2015
This is the big one! The first beta, which will now be the default download
on the site. That means we think this is the best release of Processing that's
currently available, and that nearly everyone should be using it. It doesn't
mean we've worked out all the bugs just yet, but hey, who has?
A still-in-progress rundown of the changes in Processing 3 is here:
2.x Modes, Tools, and Libraries will need to be updated for 3.x, so if you're
an author of these, see the notes in the link above. We're also planning some
sort of online Q & A / office hours / talk to Ben about what's changed session
to help folks along. We want to help, we just need to find the time.

And for those into the nitty gritty, or who enjoy lame jokes about esoteric
technical details, the detailed changes since 3.0 alpha 11 are below.
[ bug fixes ]
+ 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, because not everything is a bug ]
+ 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 by our fine community ]
+ Fix contribution compatibility check
+ Update Spanish translation
+ Fix bug with tab sorting when adding new tabs
[ this summer, Google's paying folks to stay indoors & work on Processing ]
+ 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
[ Jakub joins Andres in a battle of wits and test of wills against OpenGL ]
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a11 (REV 0238) - 16 July 2015
Hopefully the last release before we go to beta.
[ 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
These aren't structural, but will
Our hope is that this will be the
series, and that it's now safe to

need to make some (small) changes.

require a rebuild of your code.
last round of changes for the 3.x
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 package.
The 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
+ Dim edit menus as appropriate during selection/no selection/etc
+ Internationalize
+ 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/
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a10 (REV 0237) - 9 June 2015
Huge release! Knocking on the door for beta, this includes many changes

and improvements for how displays of all kinds (single, multiple, retina,
high dpi) are handled, plus smoothing, full screen, etc etc.
[ breaking things for the future ]
+ Added fullScreen() method to make it far easier to run sketches
using the full screen. Reference notes and explanation here:
+ smooth() and noSmooth() can only be used once per sketch, in setup().
See the changes, the explanation, and the discussion here:
+ 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. Mmm!
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a9 (REV 0236) - 19 May 2015
More work as we head toward beta. Mostly improvements to the GUI
and fixes for many bugs. So close to beta I can practically smell it.
[ 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
[ andres vs. opengl, episode 7 ]
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a8 (REV 0235) - 17 May 2015
Stabilizing the mess from 3.0a6 and 3.0a7. Read the release notes for
those versions (below) if you haven't already.
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/<init> 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)) {
+ 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
[ akarshit 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 by andres ]
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a7 (REV 0234) - 26 April 2015
Read the notes in 3.0a6 for major changes! This is only a minor bug fix
release to take care of a few things that were broken in 3.0a6.
[ 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()

[ known issues ]
+ OpenGL sketches work on Windows (32- and 64-bit) only after running
a sketch that uses the default renderer
+ Other issues that are our highest priority for the next release:
+ Other high priority items to be fixed before 3.0:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a6 (REV 0233) - 25 April 2015
This is the big one! We've jettisoned PApplet as the base class so that
we can improve performance, reduce flicker, and have a better base from
which to build better, more modern graphics rendering. More of the
gory details for the PApplet/PGraphics changes can be found here:
Speaking of breaking things, we're on the road to a new GUI as well:
and that means all Modes and some Tools will need to be updated:
We've also made major changes to better integrate PDE X, Tweak Mode,
and other nice features for the default "Java" Mode. These will be the
center of the changes for 3.x, which is focused on improving the editing
and debugging experience in general.
Suffice to say, this is truly an ALPHA quality release. We're pushing it
out so that we can get more people testing it. If you want something more
stable, we recommend 3.0a5 (not 2.2.1, that thing is old!)
Library/Mode/Tool authors: Please help us get 3.0 ready by getting your
code ready for 3.0! Because 2.x and 3.x contributions are separate, you
can maintain separate versions if you like (or only support 3.x). You
can also specify the earliest and latest revisions of Processing that
your code supports, so that it's only installed with the correct version.
If anything is unclear, please file an issue. I've not had time to write
up all the changes yet (and some are still in progress), but what you see
in this release is representative of where we're headed for 3.0.
[ known issues ]
The full list is here:
but a few that you might be likely to run across:
+ install/remove buttons not working in the managers

+ static mode - no setup() / draw() - broken in OpenGL
+ sketch window is not placed at correct location when running a second time
[ general fixes and changes ]
+ Merge experimental into the main Java mode, move Java Mode to its own area
+ Deal with ctrl-alt-n regression
+ Don't add a ^M to files when writing
+ Add more bulletproofing to the save process
+ Text improvements for retina displays on OS X
+ Menu mnemonics (alt-f, etc) getting typed into the editor
+ Opening and closing preferences window prompts user to save unmodified sketch
+ Internal fixes and cleanups to TweakMode
+ Implement line numbers in the editor
+ Run button w/ debugger shouldn't require "continue" before actually starting
+ Change how platform-specific preferences are handled
+ Auto-insert after ANTLR @SuppressWarnings({ "unused", "unchecked", "cast" })
+ "Your sketch has been modified externally" appearing on OS X
+ Make sure the JRE downloads correctly before renaming
+ Update build scripts for Windows and Linux to use JRE downloader Ant Task
+ Moved to Java 8 because Java 7 will be discontinued
Requires Vista SP2 (let's just say 7), OS X 10.8.3, and Ubuntu 12.04
+ Update ECJ for Java 8 change
+ Update to launch4j 3.6

[ fixed earlier, not mentioned in revisions.txt ]

+ Move import suggestion to errors console
+ Server.stop() produces an error: socket closed
+ NPE when calling Client.ip() after the connection has been closed
[ who loves pull requests? I do. ]
+ Splash screen for Linux
+ Pressing PgDn in a code without scrollbar gives Exception
+ Add mnemonics for menus (alt-f to open 'file')
+ getCaretLocation() bug in package
+ Finish up debian package support
+ Replace ColorChooser PApplets with custom Swing components
+ Fix encodings, line endings, and mime types in the repo
+ Add control for dependencies (i.e. svg needs xml), needed for export
+ Lots of Auto Format fixes
+ Update name of sketch in the "Recent" menu
+ File change detection rewrite
+ Broken Windows build due to launch4j .jar not updated
+ Exported Linux sketches must be run from the sketch folder
+ only cleans up internal Clients when trying to write
+ Display download percentage when fetching contribution info
+ Recreating Client instance will cause an out-of-memory error
+ Greek translation and new fonts
+ Show tooltip when hovering over errors
+ Fix multi-touch horizontal scrolling on OS X
+ Refactor examples manager window
+ Fix ColorChooser cursor
+ Improve Spanish localization
+ Internationalization of editor error messages and Greek translations
+ Improve internationalization and localization in Greek
+ Fix for "Probably a ++ should go here" messages
+ Missing opening curly bracket error
+ Missing parenthesis error message
[ pulls from Joel ]
+ Add reference for installed tools and libraries to the Help menu
+ file missing prevents startup
+ Several new French translations
+ contributions.txt now gets deleted and recreated instead of overwritten
+ Contrib Manager does not stop parsing contribs.txt if an error exists
+ Offer to install libraries imported libraries that are not available
+ Make fatal errors terminate the pde
+ Java 8 method replace() used, removed
+ Closing a few unclosed BufferedReaders and InputStreams
[ Akarshit pulls away from the pack ]
+ Rewrite preferences window to use proper layout
+ Find/Replace dialog changed to GroupLayout
+ Issues with cut/copy shortcuts not working
+ IllegalArgumentException when clicking between editor windows
+ Newline after a very long line moves the visible area right
+ lerpColor() outside of setup()/draw() kills sketch

+ Use default colorMode() with lerpColor() outside setup()
+ textAlign(RIGHT) adds extra space to the right
+ rectMode() broken for createShape with JAVA2D
[ processing.core ]
+ Remove Applet as the base class.
+ Replaced JOGL with LWJGL. Ongoing JOGL support is unclear and LWJGL
seems to be more consistently maintained. Unfortunately, it trades
one set of quirks for another.
+ Renamed 2x (hidpi/retina) versions of renderers to JAVA2D_2X, P3D_2X, etc.
+ add warning message when a negative textSize() is used
+ loadXxxx() methods will truly follow redirects (including http -> https)
+ noSmooth() not sticking, has to be called again inside draw()
+ Sketch window dimensions off in Java2D
+ Dragging sketch window hides it
+ size(640,360 , P3D) doesn't work properly (fixed in 3.0a5)
[ more contributions! ]
+ saveFrame() doesn't save opaque PNG files
+ Fixes to SVG, implement percentages and some named colors
+ Add option to save JSON in compact form
+ Remove extra edges in sphere tessellation

+ Add exceptions for FloatList and IntList when using add() w/o enough elements
+ Video library is incompatible with 0233
[ ]
+ Ensure # of columns and titles lines up with Table(iterator) constructor
+ Add table header to saveTable() with HTML output
+ Remove extra spaces from HTML output
+ Make save() and write() consistent between JSONObject and JSONArray
+ Add indent=N to saveJSONObject/Array() methods
+ Add 'compact' to JSONArray (see PR for the add to JSONObject)
+ Add push() and pop() to String/Int/FloatList
[ sketch ]
+ Added E2D, an experimental/enhanced renderer that draws directly
to the Graphics context without an intermediate image. This greatly
speeds up performance (especially on retina/hidpi displays), but
prevents pixel access (no save(), saveFrame(), loadPixels(), etc).
It also causes some rendering hiccups (frame rate is not as smooth),
but that's why it's experimental.
+ Remove isGL(), is2D(), is3D(), displayable() from PApplet
(these were unintentionally auto-imported from PGraphics)
+ Remove pause variable from PApplet (was not documented)
+ Added copy() to PImage (to work like get(), ala PVector)
+ Added getFontRenderContext() to PGraphics
+ Add error message when doing loadFont() on an OTF
+ Memory usage insane increasing in 3.0a5
+ Remove set/get/removeCache() methods from PApplet, these should
have been marked //ignore in PGraphics all along
+ Fix/prevent flicker on startup
+ static mode - no setup() / draw() - broken in Java2D
+ Switch to using the EDT for launching sketch and talking to the OS

+ Roll back problematic full screen changes on OS X
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a5 (REV 0232) - 16 November 2014
Hello from the University of Denver! I'm here with Casey, Dan, Andres,
and Manindra working on 3.0. Chris Coleman and Laleh Mehran have been
hosting us on behalf of the EDP program. It all looks a bit like this:
[ 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 shapes
+ 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 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a4 (REV 0231) - 12 September 2014

Another release to deal with a handful of bugs found in the last alpha.
The next alpha release will contain major changes and break a few libraries
and tools, so this is an attempt at a final "stable" alpha that can be used
until all those issues are sorted out.
[ changes ]
+ Contributions (Libraries, Modes, Tools) are now read from their own
listing that's specific to Processing 3.
+ Made the new editor the default.
+ The OS X default File menu (shown when no windows are open) now has the
order/naming changes found in the sketch window File menu.
+ 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)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a3 (REV 0230) - 26 August 2014
The 3.0 process continues as we've wrapped up a very successful

Google Summer of Code, and have also been integrating contributions

(internationalization!) from some helpful community members.
In particular, Jakub Valtar, Darius M, and Frederico Bond are my heroes:
[ 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 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
+ Problems 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a2 (REV 0229) - 31 July 2014
The 3.0 train gains steam and continues to hurtle down the track.
[ changes ]
+ Added a new sketchbook location, so that you can have separate sketchbooks
with 2.0 and 3.0 releases. The downside is that they won't stay in sync,
but the upside is that sketches that haven't been updated, or conflicting
Libraries, Modes, or Tools won't cause trouble with the other version.
The new preference is called sketchbook.location.three (the old preference
was sketchbook.location). If you already have a 2.0 sketchbook, that will
be used by default with 3.0 until you change it in the Preferences window.
+ Neglected to mention with the previous release that the video library has
been removed from the default download. This decreases the size of the
Processing download by about 20%. In addition, it was only the video
library for the platform being downloaded, and with the return of crossplatform application export, that could cause sadness. To use the video
library, use the "Add Library..." menu and select it from the list.
+ Added a new preference for the 3.0 sketchbook location, so that a separate
sketchbook (and with it, different Modes, Tools, and Libraries) can be
used with Processing 3.0 versus older versions of 2.x.
+ Remove default menu bar hack for OS X
+ Move to native OS X full screen (supported in 10.7 and later)
This allows us to remove native code for hiding the menu bar.
But it may introduce more quirks, we'll have to test it out.
[ fixes ]
+ The Examples weren't included in 3.0a1. Oops.
+ Fix "No such file or directory" error when exporting on Mac OS X.
This bug actually meant that OS X apps weren't signed
+ Prevent opening sketches multiple times
+ Disable Mac OS X export button on other platforms
+ Removed duplicate 'fonts' folder in the download

+ Removed welcome message from the sound library

+ Get the 'modified' indicator working on OS X document windows again
+ Do bounds check on setVertex(PVector)
+ Using createGraphics() w/o begin/endDraw(), don't attempt drawing w/ image()
[ the data classes ]
+ Add copy() method to Table
+ Return null from getString() with float and double values that are NaN.
Fixes how saveTable() works (writes blank entries instead of NaN).
+ get(5) with an empty Int/Float/StringList was returning 0
+ FloatDict and FloatList should always put NaN values at the end on sort.
+ Add print() method to the various data types.
[ summer of code ]
+ URL opening problem fixed by use of getCanonicalPath() on Windows
+ If Server constructor fails, throw an exception
+ Clear status messages in the Contribution Manager
+ Add a progress bar for slow "Save As" (and "Add File") operations
+ NullPointerException in addBreakpointComments() when saving sketch
+ Run button was staying highlighted permanently
+ Dialog box for new tab/rename tab/sketch
X Fixed issue where the browser wasn't opening the reference properly
[ you request, we pull ]
+ Insert tabs properly when prefs set for tabs mode
+ Improve the appearance when using the Nimbus LAF
+ Implement A and a (elliptical arcs)
+ Fix typo in StringList.insert()
+ PImage resize() causes images to not draw
[ fixed in earlier releases ]
+ maxHeapSize typo in the build scripts
+ for() loop with nothing inside parens crashes Auto Format
+ Chinese text is overlapped in Processing 2.1 editor
+ Implement Windows menu in the PDE
+ Default font fixes (merged for 2.2.1 or earlier)
+ image resize() takes oddly long time
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 3.0a1 (REV 0228) - 26 July 2014
Kicking off the 3.0 release process. The focus for Processing 3 is improving
the editor and the coding process, so we'll be integrating what was formerly
PDE X as the main editor.
This release also includes a number of bug fixes and changes, based on
in-progress Google Summer of Code projects and a few helpful souls on Github.
Please contribute to the Processing 3 release by testing and reporting bugs.
Or better yet, helping us fix them and submitting pull requests.
[ contributed fixes! ]
+ Fix blendMode() problems in the default renderer (thanks Jakub Valtar!)
+ Lighting issues with non-planar triangle strips or quad strips
+ Set the application name on Linux
+ Serial library not working on export
+ Fix build problems on Windows
+ filter() not applying to images produced by saveframe() consistently
+ drawLatch in PJOGL can be null after requesting frame rendering
[ summer of code ]
+ Line coloring incorrect for filtered contribution listings
+ Added Present's background color as an option to the Preferences window
+ Check for updates on startup
+ Avoid problems with out-of-date contribution list
+ Integrate tweak mode into the new editor
+ Implementation of a list of open sketches in the Sketch menu
+ Add preference to set the present color
+ Fix a problem where mode menu selection would change even if
the change was canceled due to the sketch being modified
+ Add date and time stamps to the Contribution Manager

[ more bug fixes ]

+ Prevent the current Mode from being de-selected
+ Prevent ArrayIndexOutOfBoundsException when calling min/maxValue()
on a FloatDict that only contains NaN values
+ Last row was being skipped on tables with the 'newlines' option set
+ Debug table parsing with header rows
+ Bug fix for setting Table data types
+ Fixes for new Table(Iterable). Category data types were not importing
their dictionary, column titles weren't set, and performance improvements
were badly needed.
+ When using setColumnType(), replace nulls with missingInt, missingFloat, etc
Formerly, this was throwing a NullPointerException.
[ changes ]
+ A new sound library has been added, and Minim has been removed. Minim
will now available via the Contributions Manager.
+ Add copy() method to PVector
+ Major performance improvements to parsing w/ the 'newlines' option
+ add getColumnTitle(int) and getColumnTitles() to TableRow interface
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.2.1 (REV 0227) - 19 May 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.2 (REV 0226) - 12 May 2014
Major changes to, and improvements upon, how "Export to Application" works.
Plus dozens of bug fixes for all manner of atrocities.
[ bug fixes and additions ]
+ Sketches only starting once, or half-starting and hanging on Mac OS X.
A major problem on OS X, thanks to David Fokkema for tracking down a fix.
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.1.2 (REV 0225) - 15 April 2014
Lots of small bug fixes plus some additional changes to support
the new Python Mode, coming soon:
[ the pde ]
+ The PDE was using 15% of CPU while just sitting idle. Thanks to
David Fokkema for the fix (and pull request).
+ 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 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()
[ andres vs opengl, episode 225 ]
+ 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)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

PROCESSING 2.1.1 (REV 0224) - 21 January 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
[ windows ]
+ Export to Application was broken on Windows
+ Right-click on selection was causing text to de-select on Windows
[ mac os x ]
+ On Mac OS X, the app was called
+ Better support for native libraries in exported applications on OS X
[ serial library ]
+ readStringUntil() missing from new serial library
+ Miscellaneous pdates to the serial library
+ Serial (apears to be) running slowly
+ Read a single character at a time to emulate RXTX behavior
+ Add basic tests for throughput and latency
+ Add a debug() method to Serial

+ Switch the examples over to use printArray()
+ Handle the UnsatisfiedLinkError when loading the native library fails
[ core fixes ]
+ PImage resize() causes PImage not to be rendered in JAVA2D
+ Remove from core source folder... ancient
+ Remove println() from the dataPath() method
+ Add special case for 'null' to println()
+ Added print() method to IntList
+ Fix esoteric typo with alpha and color
+ pushStyle/popStyle should save/restore blendMode
[ opengl updates ]
+ PImage copy() function used with P2D flips the image
+ Filter shaders don't need to use the texture uniform
+ texture() bug with stroke() in P2D
+ Allow sharing of GL context amongst multiple windows
+ Texture sampling setting ignored when creating an offscreen PGraphics
+ Rounded rectangle broken with Processing 2.1 P3D renderer
+ Clear the global PGL on dispose()
+ Pie arcs have stroke between endpoints in P2D/P3D
[ missing in the 2.1 release notes ]
+ init() not called on tools until later
+ Finish changes so the PDE can use an unmodified JRE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.1 (REV 0223) - 27 October 2013
There have been major changes since 2.0.3, most of them are outlined in
the release notes for 2.1 beta 1 (look down a few dozen lines).
This release includes a few updates to fix problems introduced in the beta
release, as well as additional general bug fixes, especially for OpenGL.
+ 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. Details on the same page that nobody read last time:
+ 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"
...and so on
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
+ Additional fix for occasional flash/flicker with drawing complex scenes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.1 beta 1 (REV 0222) - 20 October 2013
This release contains major changes. The big ones:
+ Java 7 is now used across all platforms. On Mac OS X,
we're now embedding Java 7u45. More info here:
+ Major changes have been made to Export to Application.
Read here:
+ 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 ]
+ Screen stops updating sometimes with retina displays on OS X
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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0.3 (REV 0221) - 5 September 2013
Lots of bug fixes, primarily a ton of work by Andres to improve
OpenGL rendering with P2D and P3D.
[ andres vs the volcano ]
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0.2 (REV 0220) - 14 August 2013
Many small bug fixes and lots of work on the Library/Tool/Mode Manager.
Full screen is back for Windows, and lots more.
[ 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.
(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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0.1 (REV 0219) - 21 June 2013
Bug fixes for some of what ailed the Processing 2.0 release, including
two contributed from Josh Giesbrecht. Thanks Josh!
[ bug fixes ]
+ Modes, Tools, Libraries not moving properly on Windows
+ Undo seems to not be going to the right location (now with example)
+ Fix a problem with exporting Windows applications from OS X and Linux.
+ 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0 (REV 0218) - 3 June 2013
And just like that, here we are at 2.0.
[ 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
+ Add return code to processing-java on Linux
+ Command line tool on OS X was broken due to classpath problems.
+ 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 feedback suggested here:
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. More details
in the reference and coming soon.
+ 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.
[ andres on the attack ]

+ PImage not drawn after resize()/get() in P2D/P3D
+ Can't disable textures for loaded OBJ shapes (2b9)
+ Can't mask PGraphics with another PGraphics
+ PGL.readPixels() causes "invalid operation" error
+ Strange behavior of PGraphics pixels[] when using P2D and P3D renderer
+ PShape setVertex has a memory leak
+ PGL lacks a wrapper for the alphaFunc() method and the ALPHA_TEST constant
+ Implement textMode(SHAPE) for 3D
+ An internal change so that PImage.loadPixels() doesn't call the renderer.
Fixes some odd quirks in saveFrame() and other draw/get/save operations.
+ Setting smooth(n) affects disables background in setup()
+ textureWrap(REPEAT) + textureMode(IMAGE) clamps positive coordinates
+ P2D, P3D drawing errors in static mode, gray screen
+ Window shorter than 127 pixels high is not rendered correctly in P2D/P3D
+ Multiple screen crash with OpenGL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b9 (REV 0217) - 18 May 2013
The 2.0 interface has arrived! Mmm... pretty.
We've removed Android and JavaScript modes from the default download. You
can easily install them by selected "Add Mode" from the Mode menu. They've
been removed because the changes have not kept pace with the rest of
Processing, and it was holding up the release of 2.0. As separate projects,
we hope it'll be easier for volunteers to get involved, rather than our
tiny, worn out development team. View the projects here:
There are also lots of goodies in the new data classes found in the package that will make it much easier to handle data from
inside Processing. More documentation coming soon!
We're hoping this is the last beta before 2.0, but we're still haggling
with one or two issues that could require a beta 10. That's a lot of beta.
[ fixes ]
+ Major OutOfMemoryError problem with images fixed by Andres!
+ Lots of fixes for the library/mode/tool manager.
Repairing colors, layout, etc. along with lots of internal fixes.
+ Fix MovieMaker, it was completely broken
+ processing-java dialog window was huge
+ Library with bad version number in version causes stack trace to print.
Added warning message about it with a pointer to the remedy.
+ "New version available" mesage is showing HTML tags around it
+ "Update" not working in the manager
+ tint() with JAVA2D does not automatically refresh (with possible fix)
+ Lines not properly renderered in P3D when using ortographic projection
+ Fix JSON and get it working properly. Now official API.
+ Plus dozens of other P2D/P3D fixes that Andres snuck in there.
+ Last lines of a beginShape(LINES) are invisible in the P2D renderer
+ Incorrect number of vertices on beginShape(TRIANGLES) affect subsequent Shapes
+ Rendering unlit geometry with TEXLIGHT shader throws misleading error message
[ changes ]
+ New images for modes. New design!
+ Added loadJSONArray(), loadJSONObject.
+ Hundreds of changes to the new data classes, sorting out their API, etc.
+ Fix autoformat to indent like the p5 book/examples. Thanks pif!
+ Removed netscape.javascript stuff that was only relevant for applets
+ Change error message for libraries (especially serial) for 32- vs 64-bit
to clarify that the 32- or 64-bit version of Processing can be used instead.
+ Rebuilt the internal Runner to use SocketAttach... This may bring up
a firewall message on some machines. Don't worry, it's safe (as long as
the message is showing up when you hit Run, that's expected).
+ Add set(x, y) to PVector.
+ Removed div() and mult() from PVector, since not a legit math operation.
+ loadImage() with TGA causing images to be upside-down
+ Added getIntContent(), getFloatContent() to XML
+ Table switch to CATEGORY instead of CATEGORICAL (not documented)
+ removed createXML() and createTable()... just use 'new' for these
+ Add official API for mouse wheel support
+ Incorporated JDI changes from Manindra. This makes the download a little
larger, but is a step toward being able to have a simpler download that
only requires a JRE (and is therefore much smaller!)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b8 (REV 0216) - 24 February 2013
Dead bugs on the windscreen as we head down the road to 2.0.
(The fact that we're still in bad metaphor territory suggests
we're still a little ways off from 2.0 final.)
[ bugs fixed ]
+ "Find in Reference" broken in 2.0b7
+ Add to default imports
+ Default Renderer slow on retina displays
+ Remove extra separator at the top of the Help menu on Windows and Linux
+ MovieMaker tool will not start on Windows 8
+ On Windows, the Help menu starts with a separator (no more)
+ Color coding for if/else in Processing IDE doesn't match
+ Ignore ArrayIndexOutOfBoundsException in JEditTextArea.xToOffset()
+ Fix IllegalStateException on Windows/Linux in Save prompt
happened when hitting ESC or otherwise closing the window
+ Don't open Changes page on the Wiki from command line
+ Prevent inertia scrolling on OS X from making the editor jumpy
+ processing-java throws java.lang.ArrayIndexOutOfBoundsException: -1
+ "Auto Format" should not scroll current line to first line
+ Fix "Bounds out of range" when outdenting a block of text
Exception in thread "AWT-EventQueue-0"
java.lang.IllegalArgumentException: Bounds out of range: 5374,5376 [5375]
+ Play button (and others) no longer highlighting
Patch from John Li (jli at Thanks!
+ readlink error when running processing-java on Linux
Patch from richard at Thanks!
+ Fix table loading quirk with extensions
+ PImage.resize() greater than image size hangs
+ loadBytes() does not close input stream
+ Fixes for removeColumn()
+ Remove SVG warning about "#text" ignored
+ Fix bug where noDelays wasn't being used in PApplet
+ XML.format(0) throws error
[ improvements, updates, and changes ]
+ Add basic retina support (text/labels, buttons not yet updated)
to the Mac OS X version.
+ Clean up the code and interface for the Movie Maker tool
+ Suggest possible import statements for common Java classes
+ Add 6u37 as the Java runtime (unfortunately woefully outdated by now)
+ Add ESC and cmd/ctrl-W to the Examples window
+ Move token/syntax coloring out of theme.txt and back into preferences
+ Discern variable vs function with Find in Reference
+ If no selection, attempt to expand the selection for Find in Reference
+ Add cmd-shift-O to "Open Examples" on OS X with no window open
+ Remove Quaqua library
+ Most recent moved to the top of the "Recent" menu
+ Disable single-click expand on OS X for the examples
+ Add clear() to replace background(0, 0, 0, 0)
+ Change heading2D() to just heading()
+ Add warning message when registering AWT mouse/key events
+ Show warning when registering mouse/key events with OpenGL
+ Add functions for mousePressed(event) and keyPressed(event) et al
+ Add randomGaussian() method
+ Add TAU as alias for TWO_PI
+ Miscellaneous XML fixes and cleanups
[ tool/mode/library manager ]
+ General cleanup of the visuals/layout
+ Library manager leaves temporary folders in sketchbook folder
+ Add Mode is also reporting that it's a library that contains multiple
+ Add Tool is having problems
+ Make already installed libraries distinguishable in the list
+ Fix up the design of the list entries themselves
+ Using "Add Library" requires restart of Processing before lib recognized
[ android ]
+ Update documentation and tools for Android SDK Tools revision 21
+ Update Wiki to reflect no need for Google APIs
+ Add clear and close to some stream methods
+ OpenGL sketch crashes on older Android devices
+ Remove mouseEvent and keyEvent variables (deprecated on desktop)
[ table ]
+ Added lastRowIndex()
+ rows() instead of getRows() (doesn't perform like our other get() functions)
+ addRow() returns TableRow object to be modified
+ lastRowIndex() (to avoid getRowCount() - 1)
+ Change makeNullEmpty() -> replace(null, ""); and
makeEmptyNull() -> replace("", null);
+ Add saveTable("filename.tsv") or saveTable("filename.txt", "tsv")
+ createTable() method in PApplet
+ Removed getUniqueXxxx() and some others, pending naming decision
+ Added getColumnCount() to TableRow
[ andres assault ]
+ P3D sketches failing to run
+ Transparent pixels are not set on multisampled offscreen GL surfaces
+ Clean-up PShape API
+ Several key/mouse event issues in the db
+ Finalize shader API
+ "focused" become false when window is clicked in OPENGL and P2D renderer
+ cursor(...) and noCursor() having trouble in P2D or P3D mode
+ OpenGL/P3D sketches show graphical corruption
+ Disable stroke perspective by default
+ Fix get()/set() problems with images and OpenGL
+ Child PShape disappears when geometric transformations are applied
+ Repeated fill() in P3D throws ex for groups, weird behavior for single shapes
+ Incorrect sampler2D alpha channel from PGraphics.filter(shader)
+ Mouse data erratic in P2D
+ Destroying an OpenGL PApplet doesn't terminate SharedResourceRunner thread
+ exit() crashes Java on P2D and 3D when fullscreen only
+ Default filter on PGraphics does nothing (JAVA2D) or causes crash (P2D/P3D)
+ Crash when running latest P2D/P3D under VMware
+ SVG width and height not properly set with P2D, P3D & OPENGL renderers
+ Re-implement per-vertex coloring in P2D/P3D
+ P2D, P3D drawing errors in static mode, gray screen

Still seeing a few of these in some cases, but hopefully

this is fixed for the most part.
[ manindra magic ]
+ Problems with Find & Replace getting stuck in a loop, or replacing
with odd text after text was no longer found.
+ Error checker broken in experimental mode (fix from Manindra)
+ Bug that was causing the Debugger to point to wrong break point line numbers
'Debug' button does not re-run the project when it is already running.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b7 (REV 0215) - 7 December 2012
475,382 bug fixes in this release as we work on finalizing 2.0.
[ 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;
If we're missing anything that's 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 hint(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.
+ More Mac OS X key bindings have been implemented in the editor:
+ 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
for (TableRow row :
has now changed to
for (TableRow row :
(This may change to

syntax has changed. This code:

table) { ... }
table.getRows()) { ... }
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.
+ Disable Quartz renderer to fix line blending problem on OS X.
This older renderer was faster but had some bugs, like one that
caused lines to composite incorrectly when alpha was used.
Add "PApplet.useQuartz = true;" into your PApplet.main()
function to switch back to the old method:
+ 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.
+ 32-bit mode / 64-bit mode preference was ignored on OS X.
+ 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:
and similar on Android:
+ 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.
+ set(x, y, PImage) doesn't work with P2D/P3D.
+ begin/endShape with a single vertex causing crash on P2D/P3D.
+ Using a PGraphics as a texture produces visual artifacts.
[ android ]
+ Like the desktop release, removed default imports. This includes:
android.view.MotionEvent, android.view.KeyEvent,
due to conflicts w/ the new event system, and hoping to enforce better
cross-platform compatibility between Java, JavaScript, and Android modes.
+ Changed event handling to hopefully clean up some inconsistencies.
Removed motionX/Y/Pressure... these need to be handled separately.
More here:
+ mouseX/Y no longer include history with moves, which reduces fidelity
a bit, but will hopefully prevent us overdoing it for future releases.
+ Fix how pmouseX/Y are set.
[ 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.
+ Chopping out triangles in OpenGL (though it's only 2D drawing).
+ 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
+ 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b6 (REV 0214) - 2 November 2012
Patching up command line issues that went backwards in the last release,
a number of OpenGL fixes, and more internal changes and updates.
[ 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.
+ 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
+ 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b5 (REV 0213) - 22 October 2012

Fixes for a few regressions that showed up in 2.0b4, plus some internal
changes to simplify how modes are handled.
[ 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b4 (REV 0212) - 21 October 2012
Command line support is back! Find and Replace works over multiple tabs!
The Mac OS X version should work again in spite of Apple's best efforts!
[ 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b3 (REV 0211) - 10 September 2012
Shaking out the beta bugs.
[ 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b2 (REV 0210) - 7 September 2012
One major fix for libraries that use key events, and a number of minor
fixes that we've found along the way.
[ 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0b1 (REV 0209) - 3 September 2012
Bug fixes, new registered methods for libraries, updated keywords,
and we're beta!
[ 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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a9 (REV 0208) - 1 September 2012
As we inch closer to beta, a quick release for testing.
Plenty of video and OpenGL graphics fixes from Andres, and some functions
disappearing due to cleanups by Ben. (Andres giveth, Ben taketh away).
Consider this one to be 'nightly build' quality.
[ general ]
+ Help menu broken when Processing has spaces in its path name in 2.0a8
+ We now have repeating textures. Use textureWrap(CLAMP) (the usual
version) or textureWrap(REPEAT). If this feature is used for evil
and cheesiness, it will be removed in future releases.
+ Fix lights in GL renderers on low-end android devices.
+ Pixels for createGraphics() now transparent for P2D, P3D.
[ video ]
+ GettingStartedCapture in 2.0a8 launches X11 in Mountain Lion
+ Some videos were giving OpenGL error with P2D/P3D.
+ Jump movie to multiple of the framerate for better accuracy.
+ Movie functions not working correctly in setup().
+ Fix initialization API for Capture.
+ Some movie examples were not working in P2D, P3D in 2.0a8
+ Wrong resolutions reported by Capture.list()
[ advanced ]
+ Several constants moved out of PConstants and into PGraphics.
+ API cleanup to PShape and unapproved methods.
+ Synchronized Android sources a bit (PShape, PConstants, etc.)
+ Removed several video functions that weren't approved.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a8 (REV 0207) - 5 August 2012
A handful of bug fixes. Not as large a release as 2.0a7, but I decided
it best to get the updates out there and in use rather than waiting for
beta 1 since I'm not sure when we'll be able to get that out.
[ miscellaneous ]
+ Make sure smooth() is the default with both renderers
+ "Open" dialog on Linux wasn't showing directories
+ Double-click was immediately closing example folder (Windows and Linux)
+ Support native code in Android libraries. Thanks to m4rlonj for the patch!
+ Don't expand the folders in the examples window (Casey request)
+ Added cmd-shift-O (ctrl-shift-O) for opening examples window
+ Added recent sketches menu to the toolbar

+ Added 'empty sketchbook' indicator when the sketchbook menus are empty
+ Prevent users from deleting the last tab on the only sketch that is
currently open on Windows and Linux.
[ serial ]
+ Added 64-bit RXTX for Mac OS X serial from this page:
+ Added warning message on Mac OS X when /var/lock folders aren't available
+ bufferUntil() with values above 127 do not work properly
[ plumbing ]
+ Switch to using java.awt.Desktop classes for opening folders, links, etc.
+ Include createTextArea() in Editor for the GSOC projects.
+ Add code for setting the L&F from the prefs file for Linux.
+ Added 'all tabs' checkbox to Find & Replace, but not implemented yet.
This would be a great project for someone to finish:
+ Added notes about "color(0, 0, 0, 0) produces black" to the Wiki.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a7 (REV 0206) - 29 July 2012
Hopefully the last alpha before we hit 2.0 beta.
The big change is that we're dropping support for applets in 2.0, and in
this release. See the Changes section of the Wiki for details. We've not
updated all of the documentation to reflect this yet.
OS X 10.8 Mountain Lion support has also been added, by virtue of our
paying $99/year for the privilege of releasing our free and open source
application on OS X. When run on 10.8, versions prior to 2.0a7 would report
that they were corrupt, invalid, or not trusted. Which is definitely us.
[ editor ]
+ Implemented a "Recent Sketches" menu. This replaces re-opening
sketches on startup, which behaved inconsistently anyway.
+ Use Swing file choosers by default on Linux. The default open/save
dialogs provided by Java are pretty gruesome, so we're switching to
the Swing JFileChooser instead. To swap the behavior, set
'chooser.files.native' in your preferences.txt file.

+ Suppress "invalid context 0x0" and "invalid drawable" because they're

(unfixable) Apple Java bugs and being reported as Processing bugs.
Also suppress XInitThreads message on Linux with JOGL, which is a
JOGL bug that'll hopefully be fixed in their next release.
+ Fix Movie Maker tool on OS X.
+ Update to Java 6 update 33 on Windows and Linux.
+ Add separate 32- and 64-bit releases for Windows and Linux. Lots of other
updates for 32/64-bit support in general.
+ Replace processing.exe with a more standard version from launch4j,
which should hopefully clean up some launcher issues.
+ Change how sketches open so that there's no longer differences between
the File menu 'Open' and the way it worked from the toolbar. Simplifies
additional code that was quirky.
+ Add a warning dialog for libraries that aren't compatible.
+ Fix up the file choosers used on Linux.
+ Instead of prompting for sketchbook location on Linux, just default to
a folder named 'sketchbook' in the user's home directory. This can easily
be changed later but simplifies things internally a bit.
+ No longer allow underscore at beginning of sketch name (causes problems
with Android, and also with applets, though we care less about those...)
+ Fixed a problem where sanitized names (underscores replacing unusable
characters) could potentially overwrite existing folders.
[ core ]
+ Major changes to selectInput(), selectOutput(), and selectFolder().
See the Wiki:
The changes are there to prevent a threading bug:
And also include an option to set the default file path:
+ Change 'appletViewer' back to 'online'. Still deprecated, especially
because applets are going away.
+ Add begin/endGL added to PGraphics/PApplet.
+ Add hasChildren() to XML library.
+ Fix where displayWidth/Height not being set properly before setup()

+ XML now throws exceptions in its constructor (for advanced users).

Use loadXML() instead of "new XML(this, ....)"
+ loadXML() returns null when the file did not open properly
+ ortho() causing line and fill to be misaligned
+ Add some extra options for PApplet.main() for advanced users:
PApplet.main("SketchName") and PApplet.main("SketchName", args)
[ android ]
+ Add full PAppletMethods implementation to Android, so that PGraphics
and PImage methods are brought into PApplet.
+ Swap Run on Device and Run on Emulator
+ Fix XML crash on loading because of desktop-specific attribute
error: ""
This also fixes PShape on Android:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a6 (REV 0205) - 1 June 2012
Lots of changes since the last update as we move closer to beta.
Major updates for 2.0 can be seen on the Changes page of the Wiki:
[ changes ]
+ Lots of updates to how full screen, multiple displays, etc work:
+ Added an option for selecting the default display inside Preferences.
+ P2D and P3D are now variations of the OpenGL renderer.
+ XML and Table are now part of the* package.
There's also new loadTable() and loadXML() methods in PApplet.
[ bug fixes ]
+ Renaming .pde to .java (or vice versa) complains
regression from:
+ handleFindReference in should be public for alternative modes (?)

+ Base.listFiles does not list recursively if extension is given
+ ByteUnderflowException thrown and Font not reported
+ Convert tabs to spaces when pasting text
+ Fixed up some of the error messages inside Compiler.
+ When internal tools crash, don't add them to the menu
(prevents the PDE from locking up on startup).
[ fixed earlier ]
+ Export reports "Could not copy source file" (even though it works)
+ Preferences window not visible on taskbar
+ Paste value into color picker tool does not update box-slider
+ Unable to access Javascript examples
+ Closing sketch file closes applet
[ core ]
+ Add support for println(long) because it was converting the type to float
+ createGraphics for JAVA2D generates the wrong error msg w/ w/h <= 0
+ Removed NanoXML, added save() method, other wish list features.
+ Fix whitespace issue with XML
+ Make displayWidth/Height work properly with multiple screen.
(In the past, screen.width and screen.height just returned the default
display size, not necessarily the display being used.)
+ Built in Hansi's full screen API for OS X, so that sketches can use
full screen without exclusive mode. See the Wiki for details.
+ Now attempts detect when a sketch's size is the full screen,
and if so removes the frame border, etc.
+ --display option now works properly (on OS X and elsewhere)
[ OpenGL by Andres ]

+ polygon shapes without fill slowdown render progressively
+ screenY(x,y,z) returns incorrect coordinate
+ lights() behaving differently with OPENGL2 than original OPENGL
+ directionalLight() is wrong on box()
+ PShape3D uses a lot of memory
+ triangle in first ring of sphere() not being made properly
+ beginRaw() not working with 3D
+ set() in 3D does not work on 2.0a5
+ frustum() and ortho() broken in P3D
+ get() with OPENGL is grabbing the wrong part of the image
+ OpenGL noSmooth() does not work
[ android ]
+ Android SDK Tools revision 19 (later may work too) are required.
+ Android mode no longer broken on Windows. Google has fixed the bug,
but you'll need to use the latest SDK.
+ GL2 specific code in Processing 2.0a5 break P3D on GLES2 hardware
+ OpenGL/ES requires precision specifier on float types
+ loadShape() with obj files was broken in 2.0a5
+ camera() and arc() now work together
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a5 (REV 0204) - 23 March 2012

Major updates in this release include a huge revamp of the OpenGL library
by Andres, fixes to get Android Mode working again, and a number of bug
fixes and additions as we head toward 2.0.
Unfortunately, however, Android mode is still broken on Windows.
On the OpenGL front, we're working to have a single library that works
across both desktop and mobile, which is good news because it means we have
a fighting chance of making it work (rather than maintaining two entire sets
of a very complicated set of code), but the downside is that it requires
newer versions of OpenGL on both the desktop and mobile, so it may cause
problems with old OSes, mediocre graphics drivers, etc that worked with
earlier releases.
[ bug fixes ]
+ OpenGL applets are working again.
+ Abnormal high Java CPU usage at empty sketch with draw()
+ "Framingham" example has BufferOverflowException
+ Repeatedly calling texture() with new image raises memory error
+ Doc comments not being properly terminated in export of applet
+ Tweaks to the code to prevent multiple copies of Processing from
running at once.
+ Fix bug with 'base' not getting set in the Mac OS X platform class.
+ Syntax highlighting not case sensitive in 1.5 through 2.0+
+ Fix problem with application export on Linux
+ Fix PImage.get() issue with width or height < 0.
+ (Mostly failed) attempts to improve the performance of tint() with Java2D.
+ Fix so that normals aren't attempted when no texture is set.
+ Several bug fixes inside Table as they relate to inserting/adding columns.
[ changes/additions ]
+ Enable smooth() by default.
+ Added setContent() to the XML library, other tweaks to XML export.
+ Make note of when library is not available (serial) with error msg
i.e. if running in 64-bit mode on OS X, can't do serial

+ Update to Java 6u29 for Linux and Windows (OS X now updated).
+ Don't show library conflict warning until someone tries to build
with code that actually calls on one of those packages.
+ urlEncode() and urlDecode() added (docs coming later).
+ delay() is back again. F*king delay().
+ Added anti-alias methods so that FSAA can set up properly. The API for
these is not set yet.
[ in earlier releases ]
+ Commenting via menu or shortcut does not set sketch to "need save".
+ Moved the data folder outside the main jar in exported applications.
Otherwise enormous files are sometimes added to the jar, which makes
things needlessly slow.
+ Create new MovieMaker tool to write uncompressed QuickTime movies.
+ Library imports failing for libs that define the same packages in 1.5.1
+ Closing applet window in Processing 1.5 causes serial crash.
[ javascript ]
+ Finalize JavaScript mode export folder name.
+ Intermittent hangs of PDE when launching JavaScript Server
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a4 (REV 0203) - 10 November 2011
This is just a quick release so that I can procrastinate on packing for
Chicago a little longer. A handful of bug fixes here:
+ Video capture was broken in 2.0a3 on OS X due to an issue with the build
process. Should be all set now.
+ Fixed incessant "inefficient font rendering" debug message on Android.
+ Fixed android/code/build.xml to point at the correct SDK version.
+ Changing between 32- and 64- bit mode on OS X wasn't properly reloading
library paths. Now it should pick up the necessary 32- and 64-bit version
of a library that's needed. (However there are still no useful error
messages when natives aren't available for the platform--just an
UnsatisfiedLinkError when you try to run. Will fix.)

[ andres' bug victims ]

+ Multiple calls to curve() connect subsequent curves with lines in P3D/OPENGL
+ Arc not drawn in P3D and OpenGL mode (2.0a2)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a3 (REV 0202) - 5 November 2011
Some weekend bug fixing and regression repair for the recent alpha releases.
Also several Android fixes to get things working again with more recent
updates from Google. You'll need to upgrade to this version of Processing
in order to continue using Android mode.
[ environment ]
+ Fix problem with serial not loading on Mac OS X.
+ Fix problem with popup menus on the toolbar disappearing immediately
when used on Mac OS X 10.7 (Lion).
+ Incorrect tab/line shown for preprocessor errors when more than 2 tabs
+ Commenting via menu or shortcut does not set sketch to "need save"
+ IDE Export Application button exports applet (fixed in 2.0a2)
[ core ]
+ Fix for video frames not showing up in 3D.
+ Rounded rect() does not have a maximum length for corner radius
[ android ]
+ Fix libraries when used with Android. Libraries can also specify
an Android version by including an 'android' subfolder.
+ Fix problem with export menu, keys, toolbar being different.
+ Change default package name a bit.
+ Switch to SDK 8 (Android 2.2) as the minimum that we're supporting.
This allows us to rely on far more consistent OpenGL implementations.
+ Update the project files for Android SDK Tools Revision 15 (now required)

+ Improve launching with the emulator.

+ Remove 'includeantruntime' warning during build.
+ "Date could not be parsed" error.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a2 (REV 0201) - 31 October 2011
Happy Halloween! I'll be dressing up as an ArrayIndexOutOfBoundsException.
This release is primarily focused on the new video library and making it
usable across platforms. It also has some changes for how applications
are exported, and a number of other bug fixes and tweaks.
[ platforms ]
+ With this release, Java 1.6 is now required. We will no longer be
supporting Java 1.5.
+ In perhaps related news, we are no longer supporting Mac OS X 10.5.
We have to support 10.6 and 10.7 across both 32- and 64-bit, and adding
yet another to that is simply not possible.
[ 32- and 64-bit support is a nightmare ]
+ A great deal of effort is being put into supporting the emergence of
64-bit. Library support has changed significantly to get things working,
more on this coming soon.
+ Serial on Mac OS X and Windows is currently only available for 32-bit.
Hoping someone can help us support a 64-bit version sometime soon.
+ When exporting a 64-bit application for Windows, a .bat file is created,
because our .exe doesn't yet support 64-bit. Assuming you have a 64-bit
JVM installed, the .bat file should load things properly.
+ Because serial only supports 32-bit on OS X, exporting an application
that uses serial will only create a application.macosx32 folder, which
is a 32-bit app for Mac OS X. No application.macosx64 will be created,
nor will a universal application.macosx folder. This is also the case
for other libraries that have only 32- or 64-bit support. See earlier
note that 32- and 64-bit support is an f*ing nightmare.
[ video ]
+ The most significant change in this release is that the new video library
from Andres (based on his old gsvideo library) is nearing fully fucntional.
+ MovieMaker is going to be replaced by a Tool that allows you to sequence
a set of images together into a movie file. The tool currently has a GUI
bug that breaks it, but this will be fixed sometime soon.
[ other changes ]

+ Application is now the default export (instead of Applet).

+ Change to how dataPath() and dataFile() work. This is an undocumented
function, but for those using it, here's the skinny:
dataPath() is only available with applications, not applets or Android.
On Windows and Linux, this is simply the data folder, which is located
in the same directory as the EXE file and lib folders. On Mac OS X, this
is a path to the data folder buried inside Contents/Resources/Java.
For the latter point, that also means that the data folder should not be
considered writable. Use sketchPath() for now, or inputPath() and
outputPath() once they're available in the 2.0 release.
dataPath() is not supported with applets because applets have their data
folder wrapped into the JAR file. To read data from the data folder that
works with an applet, you should use other methods such as createInput(),
createReader(), or loadStrings().
+ Additional library files included with application exports are now placed
in the 'lib' folder on Linux and Windows, or buried inside the OS X app.
This helps prevent the unsightly mess of DLLs that were crowding the
root folder of exported applications on Windows and Linux.
+ If noLoop() has been called but a sketch is resized, redraw() will be
called to update the screen.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 2.0a1 (REV 0200) - 2 September 2011
First alpha release as we head toward 2.0. Please read the changes page
to learn about what's different:
[ since we last spoke ]
+ Lots of video work from Andres.
+ Updated to Java 6u26 on Windows and Linux.
+ HTML escapes for < and > were not working properly
+ Quit if multiple instances of Processing are running (see the Wiki).
+ Fixed another problem with missing shearX/Y() in JAVA2D
+ Removed textMode(SCREEN).
+ Added expand(long) and expand(double) because of Table.
+ with full path raises exception
+ Fix problem where loading data from an http:// stream would
run out of memory on Android.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0199 - 27 June 2011
Handful of bug fixes, primarly to deal with issues introduced in 0198.
+ Remove error messages for UpdateCheck w/o internet connection.
+ char c = 'u' breaks sketches in 0198
Also additional fixes to handling bad character constants in the preprocessor
+ Deal with extraneous error messages about the emulator and AVD when trying
to run Processing on an Android device.
+ Fix broken loadShape().
+ Fix broken loadNode() and XML usage in general.
+ Fix problem with save() writing multiple image files with an extra .tif
at the end.
+ Added no-op orientation() method to the desktop version so that code
will work unchanged between Android and desktop.
+ Add warning for missing glyphs in PFont.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0198 - 23 June 2011
Major internal work as we start blowing things up for 2.0. The main things are
covered on the changes page in the Wiki:
This is an interim release so that Andres can do a workshop. Not recommended
for casual use. Hostile or belligerent whiners need not apply.
Android mode has received zero testing, so XML, SVG, 3D, and other major
features may be broken. See statement directly above.
[ bugs fixed ]
+ Examples window placed off-screen when PDE window is maximized
+ Make examples window respond to ESC, and double-click events to
expand/collapse nodes.
+ Launch script for Linux fails to open a sketches with relative paths
+ Badly formed character constant exception
+ Resize box on OS X is not present in Examples box

+ New/Rename Tab commands inhibited when Console/Message Area is hidden
+ Make usable elsewhere by loading/reloading
+ Export to Application reports "Could not copy source file:"
+ Automatically insert the 'import processing.opengl' when P3D used.
+ Export Application Fails When Large File in Data Folder
[ reference ]
+ Add some notes about how to work with deployJava.js and applets
[ core ]
+ Added quadraticVertex() method to do a quadratic bezier vertex.
+ More efficient version of copy() added for 2D.
+ Implemented rounded rectangle method.
+ Removed the delay() method. It was awful.
+ Addded thread() method that takes a function name as a parameter,
and runs it on its own thread. No more classes!
+ returns a success boolean (rather than throwing an
exception when it fails).
[ core bugs fixed ]
+ saveBytes() error when writing to existing file
+ problem with destroy() calling System.exit()
+ post() is called after setup()
+ Remove auto-sizing from binary() (was inconsistent with hex() method).
[ libraries ]
+ Reverted back to the older serial libs, which should improve stability a bit.
Also grabbed the 64 bit Linux driver and a patch for /dev/ttyACM0 from
the Arduino guys. Thanks to Dave Mellis for the pointer.
+ Fix applet exporting for new OpenGL, also fixes signed applet requirement.
+ New XML library that more accurately reflects how DOM parsing works.

Also straightening out the API a bit. Documentation to come later.
[ andres' bag of awesome ]
+ Finish OPENGL2 renderer
+ Using createGraphics() image repeatedly runs out of memory with OPENGL
+ Resizing window in OPENGL breaks ImageCaches
+ Resize not working in revision 5707
camera() and perspective() were commented out in setSize()
+ Resizing opengl destroys context and textures
+ Implement repeating textures
[ android ] (these were missing from the actual release notes)
+ mask() has no effect unless image has already been drawn in A3D
+ point() doesn't render in A3D
+ excessive rotation of application causes memory to run out
+ mirroring in A3D when background() not called within draw()
+ removed A2D and A3D constants
+ colorMode() error
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.5.1 (REV 0197) - 15 May 2011
This release fixes a handful of regressions and quirks that were found in
the Processing 1.5 release last month.
[ 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 <path d=""/>
+ Fix misshapen quadratic bezier curves when drawing SVG files.
[ examples ]
+ HsvSpace example sketch in 1.5 download requires additional import
+ Obsolete Network > HTTPClient sketch
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.5 (REV 0196) - 17 April 2011
A lot has changed in the nine months since 1.2.1 was released, the biggest
being the introduction of "modes" for the editor, allowing you to switch
between Android development or the classic desktop/web mode. More modes are
coming in future releases.
Another significant change is a fix for applets that were stuttering or
appearing to run very, very slowly in Firefox 4 and Chrome. That's the major
reason that we're releasing this version in advance on 2.0 later this summer.
All of the changes since 1.2.1 are listed in this document. If you get stuck,
give it a search to see if there might be a clue about something that has
changed. Or if you have problems, please file a bug.
For people who have been using OPENGL2 in the pre-releases, the library
has been removed from 1.5, and will return in future pre-releases before

eventually replacing the built-in OpenGL library for 2.0.

Meanwhile, here are the changes since revision 0195, the last pre-release:
[ 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)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0195 - 10 April 2011
Bug fixes and several Android updates. Working to close in on a proper
Processing 1.5 release.
This release has several changes to renaming sketches, using Save As,
and how untitled sketches are handled. Please help test!
Note that on the Android side, this release once again requires installation
of the Google APIs. See the Android Wiki page for details.
[ general ]
+ Sketch restarts automatically after pressing stop button on PDE
+ 'unexpected token void' for any type of error (due to fallback)
+ Deal with weird states when closing last editor window on OS X
+ With one sketch open, changing the mode doesn't close the original editor
+ Move library examples to the examples menu
+ Ctrl-slash not working on Linux (fix from pkalauskas, thanks!)
+ Update to Java 6u24 for Linux and Windows
+ Export .java source files with applets and applications.
+ Reference broken in 0194.
+ Other reference tweaks
+ Fix exception spew when clicking between editor windows.
+ Don't reload sketch on "save as"
+ Smooth text on the status bar on Linux.
+ Clear up some issues with focus handling in the editor.
+ Save As/Rename don't properly set focus
+ "No library found" message when using import statements and the code folder
+ Remove version number from splash image
+ Subfolders in /libraries folder not supported in 0194,
bring them back for toxi and the toxiclibs folks.
[ core ]
+ Deal with bad screen updates for sketches running < 60 fps in JAVA2D
+ OPENGL2 record only saves one line in a LINES shape (fix from Andres)
+ normal() command commented out in sphere() method
+ save() and other pixel operations no longer working with JAVA2D in 0194
[ android ]
+ point() doesn't render in A3D
+ Android stuck at "Starting Build"
+ Deal with missing (No such file or directory)
+ Error messages about "No library found for android.*"
+ When returning to android application, sometimes screen stays black
+ Device Killed or Disconnected Error Message with Libraries

+ Better error handling when certain SDK components are not installed.
+ Canceling an attempt to find the Android SDK leaves no window open,
or crash when trying to change to Android mode w/ no Android SDK
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0194 - 9 March 2011
Lots of fixes for late-breaking problems in release 0193.
[ fixes ]
+ The Auto Format command went missing in 0193. It's back for 0194, but is
now located in the Edit menu, where it will stay for the rest of its long
and happy life.
+ The "Import Library" menu wasn't being updated properly in 0193. Note that
for the time being, there are no core libraries on Android. (OpenGL is built
in, for instance.)
+ Fix mode switching for Windows and Linux.
+ Library examples weren't showing up in 0193, now they're back.
+ Fix for flicker problem in the default renderer.
+ The examples menu wasn't completely removed in 0193.
+ Remove "temporarily skipping deletion of" debugging message on export.
+ Properly reload examples & libraries when changing the sketchbook location.
+ Fix a problem with untitled sketches and mode switching.
+ Fix problem with Sketch Permissions for Android.
[ notes ]
+ Because both OpenGL and OpenGL2 are present, there may be conflicts if you
implement any OpenGL-specific code outside the Processing API. If your sketch
includes either of the following lines:
then you should remove one of the OpenGL libraries, depending on which you
would like to use.
+ OpenGL is built-in on Android. You don't need to add it as a library, the
way you do with the desktop. A "import processing.opengl.*" line won't
hurt anything (the preprocessor removes it), but it's also not necessary.
(This is also noted in the Android wiki.)

+ Library examples no longer show up buried in the sketchbook. Instead they

can be found in the "Libraries" and "Contributed Libraries" sections of
the examples window.
[ additions ]
+ Added a new icon for "Export to Application", along the lines of the
icons used on the Android side.
+ Remove warning about the broken build.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0193 - 8 March 2011
The PDE is receiving a major overhaul. The most obvious change is that
there's now a menu that allows you to switch between "modes". "Standard"
is the Java-based mode that we're all used to, and "Android" compiles
things for Android devices.
Basically it's all pre-releases from here until 2.0.
With the mode support, it will soon be possible to embed other projects,
like the Python version, or the JS exporter, directly inside the PDE.
More on this later.
This release also fixes a handful of Android problems, like the use of
libraries, the code folder, and so on.
[ core ]
+ Fix problem that made applets suck in Google Chrome and Firefox 4.
+ Fix java.lang.OutOfMemoryError using get() and image() inside a tight loop.
+ Changed default font to Lucida Sans, available on all platforms.
This means that your text may be a slightly different size if you haven't
used textFont(), but hey, you probably don't use the default font, right?
A fella (or gal) like you?
+ textAlign() incorrect with default font on Mac OS X 10.6
+ Clean up how PDF fonts are handled. Default to writing fonts as shapes,
which makes PDF files larger, but is likely to work in more cases. If you
want editable/real text, you can call textMode(MODEL) right after creating
the PDF renderer (directly below size() or beginRecord()).
+ Saving a PGraphics as jpg using save() makes a cmyk file
+ Fix bizarre window placement when using Present mode on OS X.
[ pde changes/fixes ]

+ Added support for separate 32 and 64 bit versions of libraries.

+ Added a 64 bit version of the OpenGL library.
+ Updates to Java 6u23 in the download.
+ Fix issue with javac.exe not being included in the download.
+ Also added opengl2, which rolls GLGraphics and the new Android OpenGL
library into a newer, faster, more amazinger OpenGL that will eventually
be the default.
+ Added a *lot* of examples. This has also had the effect of making the
download enormous. It's currently obese. We'll sort that out later.
+ Code folder oddity on application export (in SVN)
+ Processing cannot run because it could not ... store your settings.
+ AutoFormat unecessarily adds spaces to function with multiple args
+ Fix for linux build script (thanks to Kevin Keraudren)
+ Fix the encoding on OS X for the "Fix Encoding and Reload" function
+ Hex value from color picker does not start with #
+ Console, preferences cleanup: removed build.path, as well as
console.output.file, and console.error.file. Also removed 'console'
true/false from preferences.
+ Change console to write to the 'console/' folder in settings.
This may eventually create a problem with logs that need to be cleaned,
but we'll keep an eye on it for now.
+ Add splash image on OS X.
+ Added window for examples. It's a bit ugly, but the menu was too much
and we should be able to clean this feller up later. Also makes the
examples a bit more obvious.
+ Updated the serial library for Mac OS X
+ Accented letter input is broken (on OS X and Windows)
Had to disable input method support (Japanese) for now.
+ For projects with too many tabs, condense the ones that are used less.
[ fixed in 0192 ]

+ Auto-format screws up if/else/else if blocks
+ Exported libraries don't mantain symbolic links
[ android edits ]
+ Add better icons from Casey for exported applications.
+ Remove the need to download the android core.jar separately
+ Remove the Google APIs requirement, just use the standard.
This means losing the standard skin on the emulator, but we'll see
about bringing it back in some other fashion in the future.
We weren't actually using the Google APIs, so it seemed silly
because of how much complexity it added.
+ Deal with issue of debug certificates expiring.
+ Fix use of .java files in Android projects
+ Save state for whether using Android or Standard mode
+ New mode support makes the Android switch less clunky
+ With mode support, "Run on Device" and "Run in Emulator" instead of
"Run" and "Present".
[ internal changes ]
+ Removed build.path from preferences.txt.
Not really used anywhere, just trying to clean things up.
+ Removed 'console.output.file' and 'console.error.file'.
These weren't respected as paths, no reason for them.
+ Change console to write to the 'console/' folder in settings.
This may eventually create a problem with logs that need to be cleaned,
but we'll keep an eye on it for now.
+ Removed 'console' true/false from preferences.
+ Cannot reproduce problem with wrong character encoding in the console.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0192 - 18 December 2010

This release contains a roll-up of lots of bug fixes. However, it's being
released before it's ready, so it should only be used by people who are having
trouble with the new Android SDK release (revision 8) from Google, which
broke Android support last week.
This version of Processing for Android *requires* Android SDK Tools Release 8.
If you're not using release 8, and don't have the necessary components
installed, you'll get (confusing) error messages saying that the SDK location
is not set, and that it could not find an SDK in the location that you specify.
As for this being an early release, the problem is that major changes were
underway regarding how libraries are handled, so it's quite possible that
library support (in both the standard or Android version) or code folder
support is somewhat broken. So with that caveat, no whining, please.
On a happier note, the changes:
[ android fixes ]
+ Compile android-core with Java 5 as the target so that it works on OS X 10.5.
[ additions from andres ]
+ A3D should use lower color depth on older devices.
+ New API for begin/endRecord().
+ Finish OpenGL blending modes in A3D
+ Automatic normal calculation in A3D
+ Improve texture handling in A3D's PFont
+ OpenGL resource release mechanism in A3D is broken
+ Multitexturing in A3D
+ Problems when loading images asynchronously in A3D.
[ preprocessor, from jdf ]
+ Fixed "Syntax error on token "else", } expected"
+ Autoformat bug (new java "for loop" syntax)
+ Fix matching brace problem in PDE
+ Fix syntax highlighting of focusGained and others

+ Error when compiling with static final global variable.
+ AutoFormat unecessarily adds spaces to function with multiple args
[ edits from Lonnen ]
+ Fix for disappearing horizontal scroll bar regression
+ Fix problems with stop(). a result, dispose() methods aren't being called on libraries (dupe) (dupe)
...also a double stop() called with noLoop()
+ Properly enforce the minimum size for editor windows.
+ Patch: Processing IDE destroys symbolic links
+ Windows: Processing cannot run because it could not ... store your settings.
+ PGraphicsJava2D.resize() not working the same as PGraphics2D.resize()
Resize is not available with renderers, use createGraphics().
Added a note to the reference.
[ more fixes and edits ]
+ Don't let PDE open sketches with bad names (reported by Max)
+ Exported libraries don't mantain symbolic links
+ Repair regression in XMLElement.getBoolean(String, boolean)
+ color() problem with alpha
+ PVector.angleBetween() regression
+ Fix for linux build script (thanks to Kevin Keraudren)
+ shearX and shearY not properly implemented with P2D and JAVA2D

+ frame.setResizable(true) does not enable maximize button.

Thanks to Christian Thiemann for a workaround.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0191 - 30 September 2010
Bug fix release. Contains major fixes to 3D for Android.
[ changes ]
+ Added option to preferences panel to enable/disable smoothing of text
inside the editor.
+ Added more anti-aliasing to the Linux interface. Things were downright
ugly in places where defaults different from Windows and Mac OS X.
[ bug fixes ]
+ Fix a problem with Linux permissions in the download.
+ Fix 'redo' command to follow various OS conventions.
Linux: ctrl-shift-z, macosx cmd-shift-z, windows ctrl-y
+ Remove extraneous console messages on export.
+ When exporting, don't include a library multiple times.
+ Fixed a problem where no spaces in the size() command caused an error.
[ andres 1, android 0 ]
+ Implemented offscreen operations in A3D when FBO extension is not available
+ Get OpenGL matrices in A3D when GL_OES_matrix_get extension is not available
+ Implemented calculateModelviewInverse() in A3D
+ Automatic clear/noClear() switch in A3D
+ Fix camera issues in A3D
+ Major fixes for type to work properly in 3D (fixes KineticType)
+ Lighting and materials testing in A3D
+ Generate mipmaps when the GL_OES_generate_mipmaps extension is not available.
+ Finish screen pixels/texture operations in A3D
+ Fixed a bug in the camera handling. This was a quite urgent issue,
since affected pretty much everything. It went unnoticed until now because
the math error canceled out with the default camera settings.
+ Also finished the implementation of the getImpl() method in PImage,
so it initializes the texture of the new image in A3D mode.
This makes the CubicVR example to work fine.
[ core ]
+ Fix background(PImage) for OpenGL
+ Skip null entries with trim(String[])
+ Fix NaN with PVector.angleBetween
+ Fix missing getFloat() method in XML library
+ Make sure that paths are created with saveStream().
(saveStream() wasn't working when intermediate directories didn't exist)
+ Make createWriter() use an 8k buffer by default.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0190 - 18 August 2010
This release is primarily for Android users. For the desktop version, there
are some problems with fonts. If you're using text, especially with PDFs,
you may want to wait until the next release.
Android users should read the Wiki (
which has a lot of new information.
[ android ]
+ Added a new menu to cover enabling/disabling Android mode.
+ Added a Permissions dialog, so that you can set permissions for your
applications, e.g. so you can read from the internet or save files.
+ Added support for icons. Put files named icon-32.png, icon-48.png,
and icon-72.png in your sketch folder, and they'll be added to your
project when it's created. Otherwise you'll get an ugly blue dot
default icon. You've been warned.
+ Finish implementing the size() command on Android. See the Wiki for notes.
+ Finish implementation of P3D/OpenGL/A3D for Android.
+ Allow screenWidth/Height as parameters to size().
+ Fix mouseX/Y mapping when using smaller screen sizes.
+ Fix text ascent/descent problem, text("blah\nblah") wasn't working.
+ Fixed how the manifest file is read/written.
+ Copied the XML and font changes from the desktop version of core.
+ Removing 'import processing.opengl.*' in the preprocessor, since it's
not needed, and will cause a conflict.
+ Added functions to lock orientation if necessary. Use:
orientation(LANDSCAPE) and orientation(PORTRAIT) if you need control.
+ createGraphics() works with A3D/P3D/OPENGL for phones that support it.
+ Fix errors showing up that .java files were duplicates.
[ core ]
+ Changed skewX/Y to shearX/Y.
+ ENABLE_NATIVE_FONTS was being ignored, native fonts were always used
in some cases. However, this broke some other things. But that's why
this is a pre-release, not a final.
[ xml fixes and changes ]
+ Changed the XML constructor to take a String for a node name, instead of
parsing a document from a String. Instead, use XMLElement.parse(String)
if you want to read a file.
+ Added getBoolean() methods.
+ Removed namespace versions of the getXxxx() methods. These were never
documented, and cause more trouble than they're worth.
+ Changing getIntAttribute() et al to getInt(). The old versions are still
there, but have been deprecated.
+ Added listChildren() method.
+ XML attributes named "xmlns" always returned NULL, now fixed.

+ When re-saving an .ods file, wasn't including all the namespace at the top.
+ Several fixes to how namespaces are handled (or not handled).
+ Methods to saved XML elements back out again.
+ Update XMLElement constructor problem.
[ environment ]
+ Added more specific language to Lnux/Sun/Java error messages on Linux.
Also added support for "Oracle" in the name.
+ Fix the New/Open buttons on the toolbar
+ Changed how "Save As" works, now copies everything in the sketch folder.
But still ignores applet, application.*, screen-* files/folders
+ Edit > Copy as HTML didn't properly encode < and >
Also added support for other Unicode entities for non-ASCII characters.
+ Ctrl-Z will undo, but not scroll to where the undo happens. Fixed earlier.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.2.1 (REV 0189) - 14 July 2010
Fix for a problem with some static-mode programs. See below for
the other changes since 1.1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.2 (REV 0188) - 13 July 2010
Changes too numerous to mention, see the notes below for all the
revisions that followed the 1.1 release in March.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0187 - 12 July 2010
More bug fixes, and one new treat for OS X users. Hopefully we're about
set to call this one 1.2. Please test and report any issues you find:
[ additions ]

+ On Mac OS X, you're no longer required to have a sketch window open at

all times. This will make the application feel more Mac-like--a little
more elegant and trendy and smug with superiority.
+ Added a warning to the Linux version to tell users that they should be
using the official version of Java from Sun if they're not.
There isn't a perfect way to detect whether Sun Java is in use,
so please let us know how it works or if you have a better idea.
[ fixes ]
+ "Unexpected token" error when creating classes with recent pre-releases.
+ Prevent horizontal scroll offset from disappearing.
Thanks to Christian Thiemann for the fix.
+ Fix NullPointerException when making a new sketch on non-English systems.
+ Fixed a problem when using command-line arguments with exported sketches
on Windows. Thanks to davbol for the fix.
+ Added requestFocusInWindow() call to replace Apple's broken requestFocus(),
which should return the previous behavior of sketches getting focus
immediately when loaded in a web browser.
+ Add getDocumentBase() version of createInput() for Internet Explorer.
Without this, sketches will crash when trying to find files on a web server
that are not in the exported .jar file. This fix is only for IE. Yay IE!
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0186 - 26 June 2010
Minor updates following up on 0185.
[ mixed bag ]
+ Android SDK requirement is now API 7 (Android 2.1), because Google has
deprecated API 6 (2.0.1).
+ More Linux PDF fixes from Matthias Breuer. Thanks!
+ PDF library matrix not reset between frames. (Fixed in 0185.)
+ Updated the URLs opened by the software to reflect the new site layout.
+ Updated the included examples with recent changes.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0185 - 20 June 2010
Primarily a bug fix release. The biggest change are a couple tweaks for
problems caused by Apple's Update 2 for Java on OS X, so this should make
Processing usable on Macs again.
[ bug fixes ]
+ Fix for Apple bug that caused an assertion failure when requestFocus()
was called in some situations. This was causing the PDE to become unusable
for opening sketches, and focus highlighting was no longer happening.
+ Fixed two bugs with fonts created with specific charsets.
+ Fix from jdf for PImage(java.awt.Image img) and ARGB images
public PImage(java.awt.Image) was setting the format to RGB (even if ARGB)
+ Large number of beginShape(POINTS) not rendering correctly on first frame
+ Fix for PDF library and createFont() on Linux, thanks to Matthias Breuer.
+ Fix from takachin for a problem with full-width space with Japanese IME.
+ Reset matrix for the PDF library in-between frames
also added begin/endDraw between frames
[ additions ]
+ Add the changes for "Copy as HTML" to replace the "Copy for Discourse"
function, now that we've shut down the old YaBB discourse board.
+ Option to disable re-opening sketches when you start Processing.
The default will stay the same, but if you don't like the feature,
alter your preferences.txt file to change:
to the following:
The issue was originally filed here:
However the main problem with this is that due to other errors, the wrong
sketches are being opened, sketches are sometimes forgotten, or windows
are opened concurrently on top of one another, creating a bad situation:
Those bugs are not yet fixed, but will be addressed in future releases.
+ Option to change the default naming of sketches via preferences.txt.

First, you can change the prefix, which defaults to:

And the suffix is handled using dates. The current default (since 1.0) is:
Or if you want to switch back to the old (six digit) style, you could use:
+ Updated bundled JRE/tools to 6u20 for Windows and Linux
+ Several SVG fixes and additions, including some tweaks from PhiLho. These
changes will be documented in a future release once the API changes are
+ Added option to launch a sketch directly w/ linux. Thanks to Larry Kyrala.
+ Pass actual exceptions from InvocationTargetException in registered
methods, which improves how exceptions are reported with libraries.
+ Added loading.gif to the js version of the applet loader. Not sure
if this is actually working or not, but it's there.
[ android ]
+ Added permissions for INTERNET and WRITE_EXTERNAL_STORAGE to the default
AndroidManifest.xml file. This will be addressed in greater detail here:
And with the implementation of code signing here:
+ Lots of work happening underneath with regards to Android, more updates
soon as things start evening out a bit.
+ Defaulting to a WVGA screen for the default Processing AVD.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0184 - 14 April 2010
Pre-release version with more bug fixes. Proper release notes will
accompany an actual release. If you're curious in the meantime, look
at todo.txt and done.txt from the source tree.
+ The 'Export' option now works in Android, so that you can get at
the debug APK that's created.
+ Problems finding javac.exe on Windows should now be fixed.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0183 - 31 March 2010
Bug fixes for Android, should remove the API v5 requirement and make
things work fine with API v6, the new minimum.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0182 - 29 March 2010
Bug fix pre-release. This updates three areas:
+ All known bugs with auto-format have been fixed (!)
+ A handful of bug fixes for the Java 5 syntax changes.
+ Fixes for using text with PDF Export.
A more thorough revisions update will be written for the next full
release version (1.2? 1.5? 2.0?) that includes all these changes.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0181 - 19 March 2010
Another update for the preprocessor changes (see below).
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0180 - 15 March 2010
This is a interim release with a reworked preprocessor that adds Java 5
syntax. We're releasing this interim version because we need help testing
it since it has an impact on any sketch created in the Processing environment.
Basically, we mighta goofed something up big, and we wanna catch it before
we throw it to the wolves.
The release also fixes a number of preprocessor bugs. Those changes will
be documented a bit later.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.1 (REV 0179) - 11 March 2010
This is the first general-purpose release since 1.0.9. The text below merges
all of the changes from all the interim revisions, with the exception of the
changes for the upcoming Android tools, which are not enabled in this release.
Lots of bug fixes over 1.0.9, and several changes that improve how fonts are
handled. Because of the large number of changes (and that some functionality
actually changes, if that's actually a word), this is release 1.1 instead
of release 1.0.10. Which is nice, because release 1.0.10 sounds baffling.
[ font changes ]
+ It's no longer necessary to use textFont() before text() and other
text-handling functions. The default "SansSerif" font is used, which
varies by platform.

+ Also in this release, the createFont() method will only load characters
as they are used, which should greatly improve the font situation on
non-Roman systems like Japanese. This will use far less memory, and should
be all around much more efficient. Formerly, createFont() took several
seconds to run, depending on the speed of your system.
+ Fixed a problem with the Create Font tool ignoring the 'smooth' setting
on some systems.
+ Fixed a separate problem with the createFont() method also ignoring the
'smooth' setting.
+ With the Create Font tool, you can also specify what Unicode character
blocks you'd like to use, making a much smaller font.
+ Fonts are no longer power of 2 by default. This should also make them more
memory efficient. With future OpenGL updates, this will work even better.
[ other changes ]
+ Lots of edits to the HTML that's used for exported applets. If JavaScript
is enabled, Sun's new loading functions are used, which offer the best
compatibility across browsers. If not, the old loading method is used.
+ Changed the OpenGL HTML template to load differently, which should fix a
NullPointerException in JOGLAppletLanucher with Java 6 Update 18 on Windows,
and should also be more efficient altogether, because the JOGL libraries can
be downloaded just once from Sun, rather than for each sketch that uses them.
+ Code from Takachin that handles full input method support in the editor for
Japanese and other scripts that are more complicated than Roman text.
Thanks Takachin!
+ Now using iText 2.1.7.
+ Changed how imports are handled in sketches. This may break some sketches
that use packages that aren't covered in the Processing reference.
+ With great help from Hansi, moved the build scripts over to Ant.
Also moved the special JRE for Linux and Windows out of SVN. It'll only be
downloaded when 'ant dist' is run.
+ Javadoc is slowly improving. More on that later.
+ Deprecated 'screen', and added screenWidth and screenHeight. Discussion here:
[ bug fixes ]
+ Fix for filter(DILATE/ERODE) from Dave Bollinger
+ Added implementation for get/set methods inside PImage (w/o pixels[])

+ Updated JNA to version 3.2.4 to support Windows 7 64-bit
Thanks to Maik for tracking down the problem and solution!
+ Fix from taifun_browser to handle texture memory leak with OpenGL and P3D.
+ Hitting ESC inside Color Selector would quit Processing
+ To fix video, and some other libraries on Snow Leopard, exported applications
are now explicitly set to run 32-bit on OS X.
+ Fix LITERAL_class so that blah.class syntax can be used in PDE code.
Found and fixed by Christian Thiemann. Thank you!
+ Fix from Chris Lonnen to lock the minimum size for the main processing editor
frame. (When too small, the console would disappear, etc.) Thanks Chris!
+ If you overwrite PApplet.main(), you're responsible for what happens.
+ Re-enabled hack for temporary clipping. Clipping still needs to be
implemented properly, however. Please help!
+ SVG paths that use 'e' (exponent) not handled properly
+ Change build scripts to use UTF-8 for encoding with javac
+ Fix ant.jar/ant-launcher.jar error in the windows/linux build scripts
+ Fixed a problem where imports inside comments were being included.
[ keys ]
+ Added ctrl-ins, shift-ins, shift-delete for cut/copy/paste on Windows and
Linux, but disabled by default on Mac OS X. You can change the setting by
altering "editor.keys.alternative_cut_copy_paste" in preferences.txt.
+ Added a preference to change shift-backspace to just mean backspace,
rather than delete. Set this entry in preferences.txt:
editor.keys.shift_backspace_is_delete = true
+ Added an option for home and end keys traveling to the start/end of the
current line rather than the beginning/ending of a sketch. The latter is
the HIG default for Mac OS X, but drives some people nuts. Change with:
editor.keys.home_and_end_travel_far = false
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

PROCESSING REV 0178 - 4 March 2010

Tons of Android work in this release. A2D has been tested and runs correctly
for all of the examples in "Basics" and "Topics". A3D is not quite finished
yet, and the size() command is still causing crashes.
This release also contains lots of work on Android Mode for the PDE, which
is being worked on by Jonathan Feinberg.
[ core ]
+ Fix for filter(DILATE/ERODE) from Dave Bollinger
+ Deprecated 'screen', adding screenW and screenH. See discussion here:
+ Added implementation for get/set methods inside PImage (w/o pixels[])
[ fixes to android core ]
+ Fix noLoop() and static-mode sketches.
+ Fix the freakout that happens with onPause()
+ App not pausing or closing when switching to another activity
+ Bezier curves were broken in A2D (extra point is drawn connecting the
shape to the corner).
+ Fixed other minor bugs in shape drawing.
+ mask() now implemented in A2D
+ updatePixels() now work properly for A2D
+ set() should now be working
+ Using set() on an image that doesn't have a bitmap, or has pixels loaded.
+ requestImage() now working
+ Drastically improve the performance of the time functions (minute() et al)
+ Point wasn't detecting different stroke weights.
+ Point wasn't working with strokeWeight > 1.
+ Fix rotate() bug (was using degrees instead of radians)
+ arc() now working properly
+ createGraphics() works, at least with A2D (or aliases P2D and JAVA2D)
+ Fixed "The application ... has stopped unexpectedly." when quitting slow app

+ test createFont()
+ createGraphics() broken
+ Remove legacy PGraphics3D class from
[ android mode ]
+ Exception handling is much improved.
+ Get stdout and stderr from the emulator/device (println() now works).
+ Removed the ANDROID_SDK env variable requirement.
PROCESSING REV 0177 - 21 February 2010
Fix for the Android tools complaining "Open quote is expected for
attribute "{1}" associated with an element type android:minSdkVersion."
Just posting a new revision because it's easier than writing instructions
for swapping the pde.jar file.
PROCESSING REV 0176 - 20 February 2010
Android changes are at the top, changes for the rest of Processing are listed
below that (a tipoff being that there's no PDF library on Android...)
[ android ]
+ Minimum platform support is changing to 2.0 instead of 1.6. That means
"Eclair" or later, and goodbye to my T-Mobile G1, undoubtedly the ugliest
cell phone I have ever owned. Hello to Droid and Nexus One.
Performance is very poor on pre-2.0 devices anyway.
+ Known issue: Sketches that use noLoop() are currently broken.
+ Added support for libraries and the code folder.
+ Classes have moved to the processing.core package instead of
+ Slashes in the SDK path are now escaped properly on Windows.
+ Fix problems preventing Android Mode from running on Windows
+ The tint() method now works.
+ loadFont() and text() now work properly. createFont() has not been tested.

[ changes ]
+ Lots of edits to the HTML that's used for exported applets. If JavaScript
is enabled, Sun's new loading functions are used, which offer the best
compatibility across browsers. If not, the old loading method is used.
+ Changed the OpenGL HTML template to load differently, which should fix a
NullPointerException in JOGLAppletLanucher with Java 6 Update 18 on Windows,
and should also be more efficient altogether, because the JOGL libraries can
be downloaded just once from Sun, rather than for each sketch that uses them.
+ Code from Takachin that handles full input method support in the editor for
Japanese and other scripts that are more complicated than Roman text.
Thanks Takachin!
+ Downgraded the PDF library to use iText 1.5.4, because later versions seem
to load slower, and don't seem to offer additional benefits. If the PDF
library gets worse, please post a bug and we'll go back to the 2.x release
we were using, or upgrade to the more recent 5.x series.
+ Changed how imports are handled in sketches. This may break some sketches
that use packages that aren't covered in the Processing reference.
+ With great help from Hansi, moved the build scripts over to Ant.
Also moved the special JRE for Linux and Windows out of SVN. It'll only be
downloaded when 'ant dist' is run. This makes the build and maintenance
more of a mess for me, but will save me from people whining about the
large files.
+ Javadoc is slowly improving. More on that later.
[ bug fixes ]
+ Updated JNA to version 3.2.4 to support Windows 7 64-bit
Thanks to Maik for tracking down the problem and solution!
+ Fix from taifun_browser to handle texture memory leak with OpenGL and P3D.
+ Hitting ESC inside Color Selector would quit Processing
+ To fix video, and some other libraries on Snow Leopard, exported applications
are now explicitly set to run 32-bit on OS X.
+ Fix LITERAL_class so that blah.class syntax can be used in PDE code.
Found and fixed by Christian Thiemann. Thank you!
+ Fix from Chris Lonnen to lock the minimum size for the main processing editor
frame. (When too small, the console would disappear, etc.) Thanks Chris!
+ If you overwrite PApplet.main(), you're responsible for what happens.

[ keys ]
+ Added ctrl-ins, shift-ins, shift-delete for cut/copy/paste on Windows and
Linux, but disabled by default on Mac OS X. You can change the setting by
altering "editor.keys.alternative_cut_copy_paste" in preferences.txt.
+ Changed shift-backspace to just mean backspace, rather than delete. You
can change back to the old behavior by setting this entry in preferences.txt:
editor.keys.shift_backspace_is_delete = true
+ Added an option for home and end keys traveling to the start/end of the
current line rather than the beginning/ending of a sketch. The latter is
the HIG default for Mac OS X, but drives some people nuts. Change with:
editor.keys.home_and_end_travel_far = false
[ fonts ]
+ Starting in this release, the createFont() method will only load characters
as they are used, which should greatly improve the font situation on
non-Roman systems like Japanese. This will use far less memory, and should
be all around much more efficient. Formerly, createFont() took several
seconds to run, depending on the speed of your system.
+ Fixed a problem with the Create Font tool ignoring the 'smooth' setting
on some systems.
+ Fixed a separate problem with the createFont() method also ignoring the
'smooth' setting.
+ With the Create Font tool, you can also specify what Unicode character
blocks you'd like to use, making a much smaller font.
+ Fonts are no longer power of 2 by default. This should also make them more
memory efficient. With future OpenGL updates, this will work even better.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING REV 0172 through 0175
These releases are mostly about Android (listed at the top), but also contain
any interim fixes that happened in the meantime.
[ android ]
+ Fix problem with Android HTML dialog box
several <BR> items showing up when first loading
+ Fix problem with windows claiming "does not appear to contain an Android SDK"
+ Implement loadImage() and other loadXxxx() functions
+ Correctly handle space bar, tab, other special keys
+ Fix problem with motion events not coming through
+ "taskdef class cannot be found" on Linux
+ Updates for r4 version of the SDK.
[ changes ]
+ In the editor toolbar, shift-new and shift-open on the toolbar open a
new window. Also, when shift is down, change text of the toolbar item
to represent what it does.
+ Replaced invocation to deal with deprecation.
This may cause problems with older releases (or on 10.4 or 10.5), not sure.
+ Use xdg-open as launcher on linux
+ Default wildcard imports are causing naming conflicts, changed how
they're set up in the preferences file.
+ Changed createInputRaw() to only bother checking URLs if : present
[ bug fixes ]
+ Re-enabled hack for temporary clipping. Clipping still needs to be
implemented properly, however. Please help!
+ SVG paths that use 'e' (exponent) not handled properly
+ Change build scripts to use UTF-8 for encoding with javac
+ Fix ant.jar/ant-launcher.jar error in the windows/linux build scripts
+ Fixed a problem where imports inside comments were being included.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.9 (REV 0171) - 20 October 2009
Happy birthday to Casey!
[ bug fixes ]
+ Removed NPOT texture support until further testing, because it was
resulting in blurring images in OPENGL sketches.
+ Complete the excision of the Apple menu bug code.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.8 (REV 0170) - 18 October 2009
A bonfire of bug fixes.
[ environment ]
+ Fix bug causing preferences to not save correctly.
+ Remove menu dimming code, in-frame menu bar, and warning message on OS X.
A year later, Apple fixed the spinning wheel w/ the menu bar problem.
+ Fix "Unrecognized option: -d32" on OS X 10.4
+ Update the outdated "Get the latest Java Plug-in here" in exported applets.
+ Use temporary files when saving files inside the PDE. Prevents problems
when the save goes badly (e.g. disk is full).
+ Fix problem with "Save changes before closing?" was being ignored.
+ Fix problems with adding/deleting tabs.
+ Saving the project with the same name (but different case)
as an existing tab was deleting code on Windows and OS X.
[ core ]
+ filter(RGB) supposed to be filter(OPAQUE)
+ Implement non-power-of-2 textures for OpenGL (on cards where available).
This is a partial fix for texture edge problems:
+ Fix get() when used with save() in OpenGL mode
+ Immediately update projection with OpenGL. In the past, projection
updates required a new frame. This also prevents camera/project from
being reset when the drawing size is changed.

+ Removed an error that caused the cameraNear value to be set to -8.

This may cause other problems with drawing/clipping however.
+ Removed methods from PApplet that use doubles. These were only temporarily
available in SVN, but that's that.
+ Use temporary file with saveStrings(File) and saveBytes(File).
[ updates ]
+ Updated to Minim 2.0.2. (Thanks Damien!)
+ Updated Java on Linux and Windows to 6u16.
+ Updated Quaqua to 6.2 on Mac OS X.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.7 (REV 0169) - 4 September 2009
Bug fixes and updates, also some tweaks for Mac OS X Snow Leopard.
[ changes ]
+ Tweaks for Mac OS X Snow Leopard, to force it to run in 32-bit mode.
This should bring back the video library (if temporarily), and hopefully
fix serial as well, though I didn't have a serial device handy to test.
+ Fix problem where line highlighting was off in 'static' mode.
+ Auto-format was killing Unicode characters (how did this last so long?)
+ PVector.angleDistance() returning NaN due to precision errors
+ Removed a major try/catch block from PApplet.main(), hopefully
this will allow some exception stuff to come through properly.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.6 (REV 0168) - 12 August 2009
Bug fixes and minor changes. Most important are replacement JOGL libraries
so that OpenGL applets won't present an "expired certificate" error.
[ bug fixes ]
+ Replaced the faulty JOGL library that had expired certificates (Sun bug).

+ Updated the Linux launcher script that enables Processing to be run

from other directories, symlinks, or from launch items.
Thanks to Ferdinand Kasper for the fix!
+ strokeWeight() was making lines 2x too thick with P2D
+ PImage.getImage() setting the wrong image type
+ image() not working with P2D, P3D, and OPENGL when noFill() used
+ Auto format problem with program deeper then 10 levels
+ Fixed a crash on startup problem (console being null)
+ Recursive subfolder copy of library folders when exporting application
[ changes ]
+ PDF member functions set protected instead of private
+ On OS X, update Info.plist to be 32/64 explicit and also updated
JavaApplicationStub for update 4.
+ Clicking the preferences location in the Preferences window will
now open the parent folder for the preferences file.
+ Update to Java 6 update 15 for the Windows and Linux releases.
[ fixed earlier ]
+ Mangled menu text with Java 6u10.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.5 (REV 0167) - 7 June 2009
Bug fix release, mostly dealing with regressions from 1.0.4.
[ bug fixes ]
+ Make the tab key work again inside the editor
+ Deal with duplicate entries for sketchbook in the file menu
[ changes ]

+ Support for smooth text in the PDE editor. Set editor.antialias=true

inside preferences.txt to enable smooth text.
+ Updated reference files.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.4 (REV 0166) - 31 May 2009
Bug fix release.
[ changes ]
+ Changed the workaround for Apple's Java bug related to the menus in OS X.
Rather than placing the menubar inside the sketch window, File > Sketchbook
and File > Examples are simply dimmed out. Instead, use the Open button
on the toolbar, which provides access to the same items. The preference
to place the menu bar inside the window is still available, in case you
prefer the previous workaround.
+ Also updated the included runtime on Windows and Linux to Java 6u14.
[ bug fixes ]
+ Fixed IDE crash when changing color scheme on windows
+ Typo in the Linux shell script was preventing it from running
+ OS X finder info on application updated to say 1.0.4
+ Removed warning message "Non-String for 8 value in 'Properties'
sub-dictionary in 'Java' sub-dictionary of Info.plist" on OS X
+ Added warning to build script for users on OS X 10.4
+ Disable point() going to set() from PGraphicsJava2D. The set() command
doesn't honor alpha consistently, and it also causes problems with PDF
+ PImage cacheMap problem when using PImage.get()
+ Fix problems with > 512 points and P3D/OPENGL
Thanks to user DopeShow for the patch
+ imageMode(CENTER) doesn't work properly with P2D
+ Reset matrices when using beginRecord() with PDF
+ Resizing window no longer distorts OpenGL graphics
Many thanks to Pablo Funes for the patch
+ Fix significant point() and set() slowdown on OS X
[ known issues ]
+ Currently no 64-bit support for any platforms. On some platforms, you'll
simply need to replace the Java folder with the distribution with something
more suitable for your operating system.
+ Command line support is currently broken
+ Text of menus/interface elements sometimes mangled (e.g. toolbar repeats
several times, other oddness). See bug report for a workaround
+ Video library threading problems with other libraries
+ See for much, much more!
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.3 (REV 0165) - 24 February 2009
Bug fix release to repair a couple of regressions caused by changes in 1.0.2,
as well as a couple other new problems encountered since.
[ bug fixes ]
+ endRecord or endRaw produces a RuntimeException with the PDF library
+ Problem with beginRaw/endRaw and OpenGL
+ Set strokeWeight on points and lines with begin/endRaw
+ Fix strokeWeight quirks with P3D when used with points and lines
+ ArrayIndexOutOfBoundsException with point()
[ changes ]
+ Update to iText 2.1.4 for the PDF library
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.2 (REV 0164) - 21 February 2009
This release fixes many bugs and adds two minor functions to the XML library.

[ bug fixes ]
+ Empty "code" folder causing problems with Export
+ Sketches not loading when .pde file is opened from the Windows Explorer
on Asian Windows systems.
+ Disable copying of metadata and resource forks in OS X build
+ Suppress goofy Apple error message about JVMArchs
+ StringIndexOutOfBoundsException caused by import statements with no dots
+ Pressing <Esc> in "Are you sure you want to Quit?" dialog causes quit
+ Fix QUADS and QUAD_STRIP with P2D
+ ArrayIndexOutOfBoundsException when drawing curves in P3D and OPENGL
+ Problems with negatve arc() angles in OpenGL, P3D, other inconsistencies
+ requestImage() causing problems with JAVA2D
+ Fix minor strokeWeight bug with OpenGL
+ Minor bug fix to SVG files that weren't being resized properly
+ OpenGL is rendering darker in 0149+
Thanks to Dave Bollinger for tracking this down and providing a solution
+ OutOfMemoryError with ellipse() in P3D and OPENGL
+ ArrayIndexOutOfBoundsException with P3D and OPENGL
+ point(x,y) ignores noStroke() in some renderers
+ Fix Windows startup problem when scheme coloring was odd
Changes to the system theme could cause Processing to not launch
+ Fix several point() problems with P3D
+ nextPage() not working properly with PDF as the renderer
+ Save style information when nextPage() is called in PDF renderer

+ beginRaw() broken (no DXF, etc working)
+ Fix algorithm for quadratic to cubic curve conversion
Thanks to user for providing a fix.
+ tint() not working in P2D
+ blend() y coordinates inverted when using OpenGL
+ Fix for getChild() and getChildren() with XML elements that have null names
[ additions ]
+ Added listChildren() method to XMLElement
+ Added optional toString(boolean) parameter to enable/disable indents
in XMLElement
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0.1 (REV 0163) - 29 November 2008
Processing 1.0 has arrived! You can read an overview of changes introduced
in the last few months here:
Also see the "known issues" section of the troubleshooting page:
This release (1.0.1) fixes a handful of issues that only showed up once we
had more testing, particularly with the wider audience we've received in the
past week following the announcement.
[ bug fixes ]
+ ArrayIndexOutOfBoundsException with File > New
+ "CallStaticVoidMethod() threw an exception" on some Mac OS X machines
+ "editor.indent" preference setting does not work properly
+ Fixed some "An error occurred while starting the application" problems
+ Added a note about the Minim library to the changes page.
+ Disable parsing of regexps with the split() command
+ Fixed ArrayIndexOutOfBoundsException in ellipseImpl().
+ Fixed problem where small ellipses weren't showing up.
[ changes ]
+ Implement multi-line tab via tab key (also outdent)
+ Code with 'import' and a space incorrectly parsed as an import statement
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESSING 1.0 (REV 0162) - 24 November 2008
Processing 1.0 has arrived! You can read an overview of changes introduced
in the last few months here:
[ known issues ]
+ Sketches that size(w, h, OPENGL) and do not clear the background on each
frame can cause major flickering or problems when the screen clears anyway.
There are several possible solutions:
1. You may need to disable the default 2x smoothing by using
2. Update the drivers for your graphics card.
3. Get a decent graphics card -- the OpenGL renderer is for advanced
use, we don't support using it with cheaper built-in graphics hardware
like the Intel GMA 950.
4. If you're running Windows Vista, try disabling the Aero theme.
This flickering issue is being tracked here:
+ "An error occurred while starting the application" when launching
Processing.exe on Windows. This is a high priority however we cannot
reproduce it on any of our test machines, which has delayed a fix.
+ With P2D, P3D, and OPENGL, series of connected lines (such as the stroke
around a polygon, triangle, or ellipse) produce unattractive results when
strokeWeight is set.
+ Unlike most applications, the menu bar is inside the editor window when
Processing is used with Mac OS X 10.5. This is a workaround for an Apple
bug in Java 1.5 and 1.6 on Mac OS X 10.5 that causes the menu bar to be
so excessively slow that the application appears to have crashed.
Please file a bug report with Apple at if you want
this fixed. The problem has existed since the spring, and we first filed
a bug with them in June, and we have received no indication that it when

it will be fixed, or if it will ever be fixed.

Or if you want to take your chances with the slow menu bar,
you can change the default setting in the Preferences window.
+ Sketches that use the video library plus OpenGL have a problem on some
OS X machines. The workaround is listed in Comment #16 of this bug:
+ Command line support arrived in a recent release, but is not working yet.
+ OpenGL rendering is more dim/darker in release 0149 and later.
Any help tracking this down would be most appreciated.
+ The first few frames of OpenGL sketches on Windows run slowly.
+ When used with P3D, strokeWeight does not interpolate the Z-coordinates
of the lines, which means that when rotated, these flat lines may
disappear. (Since, uh, lines are, you know, flat.) The OPENGL renderer
setting does not share this problem because it always draws lines
perpendicular to the screen (which we hope to do in a future release).
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
in spite of their historical feel good campiness, i've removed the
notes from earlier releases because this file was getting out of hand.