LOVE Changelog

What's new in LOVE 0.10.2

Nov 2, 2016
  • Additions:
  • Added lovec.exe in Windows. It is the same as love.exe but built with the Console subsystem, so it always uses or provides a console.
  • Added the ability to restart the game via love.event.quit("restart").
  • Added support for passing a table to love.mouse.isDown, love.keyboard.isDown, love.keyboard.isScancodeDown, Joystick:isDown, and Joystick:isGamepadDown.
  • Added love.window.isMaximized.
  • Added 'ellipse' area distribution to ParticleSystems.
  • Added support for BC4-7 compressed texture formats in KTX files.
  • Added 'shaderswitches' field to the table returned by love.graphics.getStats.
  • Added Quad:getTextureDimensions.
  • Added PrismaticJoint:getAxis and WheelJoint:getAxis.
  • Added 2-point version of love.physics.newRevoluteJoint.
  • Added table variants of Fixture:setCategory and Fixture:setMask.
  • Added EdgeShape:setNextVertex, EdgeShape:setPreviousVertex, EdgeShape:getNextVertex, and EdgeShape:getPreviousVertex.
  • Added ChainShape:getNextVertex and ChainShape:getPreviousVertex.
  • Added optional reference angle arguments to love.physics.newRevoluteJoint, love.physics.newPrismaticJoint, and love.physics.newWeldJoint.
  • Added RevoluteJoint:getReferenceAngle, PrismaticJoint:getReferenceAngle, and WeldJoint:getReferenceAngle.
  • Deprecations:
  • Deprecated undocumented Shader:sendTexture, Shader:sendMatrix, Shader:sendInt, Shader:sendFloat, and Shader:sendBoolean methods.
  • Fixes:
  • Fixed love on iOS 6.
  • Fixed os.execute always returning -1 on Linux.
  • Fixed the love.lowmemory callback to call collectgarbage() after the callback has fired, instead of before.
  • Fixed love.math.noise(nil) to error instead of returning nil.
  • Fixed an occasional crash when a Thread ends.
  • Fixed a hang at the end of video playback with some video files.
  • Fixed the video decoding thread to not do any work when there are no videos to decode.
  • Fixed love.graphics.newVideo(file) to no longer error if love.audio is disabled.
  • Fixed a rare bug in Source:play for streaming Sources if the associated OpenAL source object was previously used for a static Source.
  • Fixed corrupted Font glyphs in rare cases.
  • Fixed stencils inside Canvases on some OpenGL ES 2 devices.
  • Fixed an OpenGL error in OpenGL ES 3 when multiple render targets are used.
  • Fixed love.window.setMode crashing when called with a Canvas active.
  • Fixed love.window.maximize to update the reported window dimensions immediately.
  • Fixed gamma correction of ImageFonts and BMFonts with colored images.
  • Fixed the default shader improperly applying gamma correction to per-vertex colors when gamma correction is requested but not supported on OpenGL ES.
  • Fixed text coloring breaking because of an empty string.
  • Fixed large burst of particles when dramatically increasing the emission rate of a ParticleSystem.
  • Fixed SpriteBatch:setBufferSize to keep old sprite data if it can fit.
  • Fixed MouseJoint:getBodies unconditionally erroring.
  • Fixed memory leak in Text:set.
  • Fixed incorrect kerning caused by using kerning information for the wrong character in some fonts.
  • Fixed ImageData:setPixel, ImageData:getPixel, ImageData:mapPixel, SoundData:setSample, and SoundData:getSample to properly handle non-integer coordinates.
  • Other changes:
  • Improved performance of Channel methods by roughly 2x in many cases.
  • Improved performance of Shader:send when small numbers of arguments are given.
  • Updated love.filesystem.mount to accept a DroppedFile as the first parameter.
  • Updated Shader:send to do type and argument checking based on the specified uniform variable's information instead of the arguments to the function.
  • Updated Shader:send to accept a flat table for matrix uniforms.

New in LOVE 0.10.1 (Feb 15, 2016)

  • Additions:
  • Added a new love.conf flag t.externalstorage, which determines whether files are saved in internal or external storage on Android devices.
  • Added an optional 'collideconnected' boolean argument to love.physics.newMotorJoint.
  • Added a new variant of love.graphics.arc which can draw different types of arcs ("pie", "open", or "closed").
  • Added "lighten" and "darken" BlendModes. They can only be used with the "premultiplied" BlendAlphaMode.
  • Added the "lighten" GraphicsFeature constant.
  • Added the ability to avoid clearing specific Canvases when calling love.graphics.clear, if multiple Canvases are active at once via love.graphics.setCanvas.
  • Added Text:getDimensions.
  • Bugfixes:
  • Fixed a Lua error in the no-game screen if the window's height is too small.
  • Fixed the default error handler to reset the mouse Cursor.
  • Fixed love.filesystem functions crashing when called if liblove is used directly without calling love.filesystem.init.
  • Fixed audio on Android to pause when the app is inactive, and resume when the app becomes active again.
  • Fixed Source:setRelative to set the relative state of playing Sources to the passed value rather than an old cached one.
  • Fixed the Video decoding thread hanging after Video:seek or when a Video finishes.
  • Fixed Video:isPlaying to always return false after it finishes playing.
  • Fixed RandomGenerator:random crashing if a nil 'self' is used.
  • Fixed loading BMFont files which have characters with 0 width or height (a space character, for example).
  • Fixed love.graphics.newFont causing crashes if FileData is passed in.
  • Fixed love.graphics.clear(colortable) causing crashes on OpenGL ES 2 systems when a Canvas is active.
  • Fixed love.graphics object creation functions (e.g. love.graphics.newImage) to error instead of crash, if called before a window has been created.
  • Fixed a driver bug on some Android devices which caused all objects to show up as black.
  • Fixed a driver bug on Windows with AMD graphics cards where love.graphics.clear would not always work.
  • Fixed Shader:sendColor incorrectly converting alpha values from sRGB to linear RGB when gamma-correct rendering is enabled.
  • Fixed love.graphics.newMesh(vertices) double-converting colors from sRGB to linear RGB when gamma-correct rendering is enabled.
  • Other changes:
  • Updated the Windows executable to prefer the high-powered AMD graphics card on systems which have switchable Intel+AMD GPUs.
  • Updated love.touch.getTouches to return the list of IDs in the relative order that the touches initially happened (i.e. the first ID in the list is the least recently pressed touch that is currently active), instead of being in a random order.
  • Updated the error messages caused by invalid or bad arguments to ImageData and SoundData methods to be more descriptive.

New in LOVE 0.10.0 (Dec 23, 2015)

  • Additions:
  • Added an iOS port.
  • Added an Android port.
  • Added support for reading accelerometer values on mobile devices. Accelerometers are exposed as 3-axis Joysticks.
  • Added the flag t.accelerometerjoystick to love.conf. Disables accelerometer-as-joystick functionality on mobile devices when false.
  • Added the flag t.gammacorrect to love.conf (replaces t.window.srgb.) Enabling it globally enables gamma-correct rendering, when supported.
  • Added video playback support for Ogg Theora videos, via love.graphics.newVideo.
  • Added love.video module. It is not used for displaying videos on-screen (see Video objects for that.)
  • Added love.touch module. Note that it has important differences from the touch implementation in the LÖVE 0.9.2 Android and iOS ports.
  • Added love.touch.getTouches
  • Added love.touch.getPosition
  • Added love.touch.getPressure
  • Added love.touchpressed, love.touchreleased, and love.touchmoved.
  • Added love.system.vibrate.
  • Added love.filesystem.setRequirePath and love.filesystem.getRequirePath.
  • Added an optional program exit status number argument to love.event.quit.
  • Added love.filedropped and love.directorydropped event callback functions.
  • Added love.lowmemory event callback function, called when the app is running out of memory on mobile operating systems.
  • Added love.textedited event callback function, called when the user is compositing text (e.g. via an IME.)
  • Added love.wheelmoved event callback function (replaces "wu" and "wd" constants for love.mousepressed.)
  • Added love.mouse.hasCursor.
  • Added a boolean argument to love.mousepressed and love.mousereleased indicating whether the button event originated from a touch press.
  • Added love.keyboard.isScancodeDown.
  • Added optional x/y/width/height arguments to love.keyboard.setTextInput. They tell the system where text will show up so on-screen keyboards can avoid that area.
  • Added Source:getType (replaces Source:isStatic.)
  • Added Source:getDuration and Decoder:getDuration.
  • Added an optional string argument containing raw pixel data to the width/height variant of love.image.newImageData.
  • Added love.graphics.ellipse.
  • Added rounded-rectangle support to love.graphics.rectangle.
  • Added love.graphics.points (replaces love.graphics.point.)
  • Added love.graphics.intersectScissor.
  • Added an optional argument to love.graphics.setBlendMode which indicates whether to treat the colors of drawn objects as having pre-multiplied alpha.
  • Added a new built-in shader variable: "mat3 NormalMatrix".
  • Added love.graphics.getSupported (replaces love.graphics.isSupported.)
  • Added love.graphics.getSystemLimits (replaces love.graphics.getSystemLimit.)
  • Added love.graphics.stencil, love.graphics.setStencilTest, and love.graphics.getStencilTest. (replaces love.graphics.setStencil.)
  • Added love.graphics.isActive.
  • Added color arguments to love.graphics.clear. It no longer always uses the background color value.
  • Added love.graphics.discard.
  • Added love.graphics.isGammaCorrect.
  • Added the "clampzero" WrapMode.
  • Added the ability to specify custom mipmaps when creating an image, via love.graphics.newImage(filename, {mipmaps={mip1, mip2, ...}}).
  • Added optional x/y/width/height arguments to Image:refresh and Canvas:newImageData.
  • Added Image:getFlags.
  • Added one- and two-channel Canvas formats: r8, rg8, r16f, rg16f, r32f, and rg32f.
  • Added support for different formats in each Canvas when using multi-canvas rendering. Added the "multicanvasformats" GraphicsFeature constant.
  • Added support for OpenGL ES 2 and 3.
  • Added support for loading ETC, EAC, PVRTC, and ASTC compressed textures on systems that support them.
  • Added custom vertex attribute support for Meshes via new variants of love.graphics.newMesh.
  • Added Mesh:setVertexAttribute and Mesh:getVertexAttribute.
  • Added Mesh:getVertexFormat.
  • Added an optional 'startvertex' argument to Mesh:setVertices.
  • Added the ability for love.graphics.newMesh and Mesh:setVertices to accept a Data object.
  • Added Mesh:flush.
  • Added Mesh:setAttributeEnabled and Mesh:isAttributeEnabled.
  • Added Mesh:attachAttribute.
  • Added SpriteBatch:attachAttribute.
  • Added Shader:sendColor.
  • Added new shader functions: gammaCorrectColor, gammaToLinear, and linearToGamma. The functions also have 'precise' and 'fast' variants.
  • Added Text objects and love.graphics.newText.
  • Added per-character color support to love.graphics.print, love.graphics.printf, and Text objects.
  • Added BMFont bitmap font file support to love.graphics.newFont and love.font.
  • Added kerning support for TrueType/OpenType and BMFont Fonts.
  • Added an optional font hinting argument to love.graphics.newFont when loading TrueType fonts.
  • Added an optional spacing argument to love.graphics.newImageFont, which applies additional spacing to all rendered glyphs.
  • Added Font:setFallbacks.
  • Added love.window.maximize.
  • Added love.window.close.
  • Added love.window.requestAttention.
  • Added love.window.setDisplaySleepEnabled and love.window.isDisplaySleepEnabled.
  • Added BezierCurve:renderSegment and BezierCurve:removeControlPoint.
  • Added BezierCurve:getSegment.
  • Added love.math.compress and love.math.decompress.
  • Added Channel:performAtomic.
  • Changed APIs:
  • Changed love.mousepressed, love.mousereleased, and love.mouse.isDown to use button numbers instead of named button constants.
  • Changed love.keypressed to be love.keypressed(key, scancode, isrepeat).
  • Changed love.keyreleased to be love.keyreleased(key, scancode).
  • Changed Font:getWrap's second return value to be a table containing the text split into lines.
  • Changed love.graphics.newImage's optional second argument to be a table of flags (flags are "mipmaps" and "linear".)
  • Changed the arguments for the standard variants of love.graphics.newMesh. They're now love.graphics.newMesh(vertices [, drawmode, usage]) and love.graphics.newMesh(vertexcount [, drawmode, usage]).
  • Changed ImageData:encode to return a FileData object. ImageData:encode's first parameter is now the format to encode to, and the second parameter is an optional filename to write to.
  • Renamed APIs:
  • Renamed the fullscreen type "normal" to "exclusive".
  • Renamed the DistanceModel constants "inverse clamped", "linear clamped", and "exponent clamped" to "inverseclamped", "linearclamped", and "exponentclamped".
  • Renamed blend modes "additive", "subtractive", and "multiplicative" to "add", "subtract", and "multiply".
  • Renamed the key constant and Scancode representing the spacebar from " " to "space".
  • Renamed File:eof to File:isEOF.
  • Renamed Canvas:getImageData to Canvas:newImageData.
  • Renamed love.image's CompressedData type to CompressedImageData.
  • Removals:
  • Removed callback variant of love.filesystem.getDirectoryItems.
  • Removed the "wu" and "wd" constants for love.mousepressed (replaced by love.wheelmoved.)
  • Removed the named mouse button constants (replaced by button numbers.)
  • Removed Source:isStatic (replaced by Source:getType.)
  • Removed image loading support for all (non-compressed texture) file formats except for PNG, JPEG, TGA, and BMP.
  • Removed JPEG encoding support from ImageData:encode.
  • Removed love.graphics.point (replaced by love.graphics.points.)
  • Removed love.graphics.setPointStyle and love.graphics.getPointStyle.
  • Removed love.graphics.isSupported (replaced by love.graphics.getSupported.)
  • Removed love.graphics.getSystemLimit (replaced by love.graphics.getSystemLimits.)
  • Removed love.graphics.setStencil (replaced by love.graphics.stencil and love.graphics.setStencilTest.)
  • Removed the "canvas", "shader", "npot", "subtractive", and "mipmap" GraphicsFeature constants (the features always have guaranteed support now.)
  • Removed the "multicanvas" GraphicsFeature constant (use love.graphics.getSystemLimits instead.)
  • Removed the "srgb" GraphicsFeature constant (use love.graphics.isGammaCorrect or love.graphics.getCanvasFormats().srgb instead.)
  • Removed the "srgb" flag in love.window.setMode and in the t.window table in love.conf (Replaced by t.gammacorrect.)
  • Removed the "premultiplied" BlendMode (love.graphics.setBlendMode("alpha", "premultiplied") now does the same thing.)
  • Removed Canvas:getPixel (use Canvas:newImageData instead.)
  • Removed Canvas:clear (use love.graphics.clear instead.)
  • Removed Mesh:getVertices.
  • Removed Mesh:setVertexColors and Mesh:hasVertexColors (use Mesh:setAttributeEnabled("VertexColor", enable) instead.)
  • Removed functions deprecated in LOVE 0.9.1 and 0.9.2:
  • Removed love.graphics.getMaxImageSize and love.graphics.getMaxPointSize (replaced by love.graphics.getSystemLimits.)
  • Removed Mesh:setImage, Mesh:getImage, SpriteBatch:setImage, SpriteBatch:getImage, ParticleSystem:setImage, and ParticleSystem:getImage (replaced by set/getTexture.)
  • Removed SpriteBatch:bind and SpriteBatch:unbind.
  • Removed Canvas:getFSAA and the "fsaa" flag in love.conf and love.window.setMode (replaced by Canvas:getMSAA and the "msaa" flag.)
  • Removed the "dxt" and "bc5" GraphicsFeature constants (replaced by love.graphics.getCompressedImageFormats.)
  • Removed the "hdrcanvas" GraphicsFeature constant (replaced by love.graphics.getCanvasFormats.)
  • Removed love.window.getWidth, love.window.getHeight and love.window.getDimensions (use love.graphics.getWidth, love.graphics.getHeight, love.graphics.getDimensions or love.window.getMode instead.)
  • Bugfixes:
  • Fixed utf8.char.
  • Fixed detection of fused executables.
  • Fixed crashes when objects which store Lua callback functions are garbage collected after being used in coroutines.
  • Fixed World:getCallbacks and World:getContactFilter when used in coroutines.
  • Fixed memory leaks in love.physics if World:destroy is never called. When a World is garbage collected it now destroys all associated bodies, fixtures, and joints.
  • Fixed love.keyboard.getKeyFromScancode crashing when an invalid scancode is given.
  • Fixed decoding of 8-bit WAV files.
  • Fixed a crash issue when rewinding streaming ogg Sources, when certain versions of libvorbis are used.
  • Fixed love.audio.stop() not rewinding streaming Sources.
  • Fixed the stencil buffer in Canvases when an unsupported MSAA value is used to create the Canvas.
  • Fixed Canvas:renderTo to restore the previous canvases if an error occurs in the passed function.
  • Fixed love.graphics.draw(canvas) to cause a Lua error if that canvas is the active one.
  • Fixed Mesh:getVertexMap to return nil, rather than an empty table, if no vertex map has been set.
  • Fixed love.graphics.getColorMask.
  • Fixed the default offset for particles when ParticleSystem:setQuads or ParticleSystem:setTexture is used.
  • Fixed love.graphics.shear resetting all love.graphics transformations.
  • Fixed the "add" and "subtract" BlendModes to no longer modify the alpha of the Canvas / screen.
  • Performance improvements:
  • Improved the performance of World:rayCast and World:queryBoundingBox.
  • Improved the performance of love.graphics.line and other line drawing functions, when the "smooth" LineStyle is used.
  • Improved the performance of Shader:send when matrices are used.
  • Improved the performance of ImageData and SoundData methods when LuaJIT's JIT compiler is enabled, by using efficient FFI code.
  • Improved the performance of love.math.noise, love.math.gammaToLinear, love.math.linearToGamma, love.math.random, and RandomGenerator:random when LuaJIT's JIT compiler is enabled.
  • Other changes:
  • Updated the compatibility warning notice to use a message box and to show the version specified in love.conf.
  • Updated the compatibility warning notice to display before main.lua is loaded.
  • Updated the __tostring metamethod of love objects to output the pointer value, similar to tostring(table).
  • Updated World:setCallbacks, World:setContactFilter, World:queryBoundingBox, and World:rayCast to have improved argument type checking.
  • Updated threads to load love.filesystem automatically.
  • Updated love.filesystem to enable symlinks by default.
  • Updated love.math.setRandomSeed and RandomGenerator:setSeed to produce better results for the first few random() calls.
  • Updated love.math.random and RandomGenerator:random to produce slightly better results in general.
  • Updated Source methods that deal with spatial audio to error rather than failing silently if the Source isn't mono.
  • Updated the 3D and 4D variants of love.math.noise to use Perlin noise rather than Simplex noise, to avoid patent issues.
  • Updated love.graphics.newImageFont to no longer treat separator pixels as spacing.
  • Updated the default font to use less memory.
  • Updated the behavior of text wrapping with love.graphics.printf and Font:getWrap to work better.
  • Updated love.graphics.print and love.graphics.printf to no longer automatically round the x and y position arguments.
  • Updated some of the error messages for love.graphics.newImage to be more descriptive.
  • Updated love.graphics color functions to automatically apply love.math.gammaToLinear to color values when gamma-correct rendering is enabled.
  • Updated the "normal" CanvasFormat to internally use "srgb" rather than "rgba8" when gamma-correct rendering is enabled.
  • Updated love.graphics.setColor to affect all drawn objects, including ParticleSystems, SpriteBatches, and Meshes, even when per-vertex or per-sprite colors are used.
  • Updated the default fullscreen type to be "desktop" rather than "exclusive".
  • Updated the minimum runtime system requirements of LOVE to require OpenGL 2.1 or OpenGL ES 2 support.
  • Updated the pixel shader effect function so screen_coords.y is 0 at the top of the screen instead of the bottom.
  • Updated Images to require setting the mipmaps flag to true on creation in order to use mipmaps.
  • Updated Images to allow mipmaps for non-power-of-two sizes.

New in LOVE 0.9.2 (Feb 16, 2015)

  • Additions:
  • Added Lua 5.3's UTF-8 module, via utf8 = require("utf8").
  • Added Shader:getExternVariable.
  • Added several new Canvas texture formats.
  • Added love.graphics.getCanvasFormats.
  • Added love.graphics.getCompressedImageFormats.
  • Added ParticleSystem:setQuads.
  • Added ParticleSystem:setLinearDamping.
  • Added SpriteBatch:flush.
  • Added love.graphics.getStats.
  • Added mirroredrepeat WrapMode.
  • Added love.audio.setDopplerScale and love.audio.getDopplerScale.
  • Added optional duration argument to Joystick:setVibration.
  • Added love.joystick.loadGamepadMappings and love.joystick.saveGamepadMappings.
  • Added Joint:setUserData and Joint:getUserData.
  • Added Joint:getBodies.
  • Added GearJoint:getJoints.
  • Added Body:getWorld.
  • Added Body:getJointList.
  • Added Contact:getFixtures and Body:getContactList.
  • Added Body:isDestroyed, Fixture:isDestroyed, Joint:isDestroyed, and World:isDestroyed.
  • Added love.mousemoved event callback.
  • Added love.mouse.setRelativeMode and love.mouse.getRelativeMode.
  • Added love.keyboard.getKeyFromScancode and love.keyboard.getScancodeFromKey.
  • Added love.window.getDisplayName.
  • Added love.window.minimize.
  • Added love.window.showMessageBox.
  • Added love.window.toPixels and love.window.fromPixels.
  • Added love.window.setPosition and love.window.getPosition.
  • Added x and y fields to the flags table in love.window.setMode and love.window.getMode, and to the t.window table in love.conf.
  • Added refreshrate field to the table returned by love.window.getMode.
  • Added love.filesystem.isSymlink, love.filesystem.setSymlinksEnabled, and love.filesystem.areSymlinksEnabled.
  • Added love.filesystem.getRealDirectory.
  • Deprecations:
  • Deprecated SpriteBatch:bind and SpriteBatch:unbind.
  • Deprecated all uses of the name 'FSAA' in favor of 'MSAA'.
  • Deprecated the hdrcanvas GraphicsFeature constant in favor of love.graphics.getCanvasFormats.
  • Deprecated the dxt and bc5 GraphicsFeature constants in favor of love.graphics.getCompressedImageFormats.
  • Deprecated love.window.getWidth, love.window.getHeight, and love.window.getDimensions in favor of the love.graphics equivalents or love.window.getMode.
  • Renamed APIs:
  • Renamed all cases of FSAA to MSAA. The FSAA names still exist for backward-compatibility.
  • Fixes:
  • Fixed crashes when LÖVE objects are garbage-collected in multiple threads simultaneously.
  • Fixed love.filesystem.setIdentity breaking in some situations when called multiple times.
  • Fixed the default love.filesystem identity when in Fused mode in Windows.
  • Fixed love.system.openURL sometimes blocking indefinitely on Linux.
  • Fixed love.joystick.setGamepadMapping.
  • Fixed the order of vertices in ChainShapes.
  • Fixed love.mouse.getPosition returning outdated values if love.mouse.setPosition was used in the same frame.
  • Fixed love.graphics.newFont to error when given an invalid size argument.
  • Fixed the file name, line number, and backtrace given if love.graphics.print errors.
  • Fixed a small memory leak if love.graphics.newCanvas errors.
  • Fixed Shader:getWarnings returning unnecessary information.
  • Fixed a potential crash when Shader objects are garbage collected.
  • Fixed a potential small memory leak triggered when love.graphics.newShader errors.
  • Fixed love.graphics.newMesh(vertexcount, ...) causing the Mesh to do instanced rendering.
  • Fixed Mesh:getVertexMap.
  • Fixed Image:refresh generating mipmaps multiple times if mipmap filtering is enabled.
  • Fixed Image:setMipmapFilter to not keep bad state around if it errors.
  • Fixed Mesh:setDrawRange when the Mesh has a vertex map set.
  • Fixed internal detection of the 'position' and 'effect' shader functions.
  • Fixed some cases of noncompliant shader code not properly erroring on some nvidia drivers.
  • Fixed Texture memory leak when Meshes are garbage collected.
  • Fixed the default line join mode to be 'miter' instead of an undefined value.
  • Fixed Canvas:getPixel to error if the coordinates are not within the Canvas' bounds.
  • Fixed detection of compressed textures to work regardless of the file's extension.
  • Fixed the default error handler screen's text size when highdpi mode is enabled on a Retina monitor in OS X.
  • Fixed the default error handler background color when sRGB mode is enabled for the window.
  • Fixed the state of wireframe mode when love.window.setMode is called.
  • Fixed love.window.setMode to fall back to the largest available mode if a width or height greater than the largest supported is specified and exclusive-fullscreen mode is used.
  • Other Changes
  • Updated the Windows executable to always prefer the higher performance GPU on nvidia Optimus systems.
  • Updated the --console command-line argument in Windows to open the console before conf.lua is loaded.
  • Updated t.console and the --console command-line argument in Windows to use the existing console window, if LÖVE was launched from one.
  • Updated the love executable to verify that the love library version matches before using it.
  • Updated the Lua wrapper code for modules to avoid crashes when the module's instance is created, deleted, and recreated.
  • Updated internal code for handling garbage collection of love objects to be more efficient.
  • Updated love's initialization code to trigger a Lua error if love.conf has an error in it.
  • Updated love.filesystem.getSaveDirectory and friends to strip double-slashes ("//") from their returned paths.
  • Updated the error message when love.filesystem.write or File:open fails because the directory doesn't exist.
  • Updated error message when love.math.setRandomSeed(0) is attempted.
  • Updated the error message when invalid UTF-8 strings are used in love functions that expect UTF-8.
  • Updated love.physics.newChainShape to error if the number of arguments is invalid.
  • Updated love.physics.newPolygonShape and love.physics.newChainShape to accept a table of vertices.
  • Updated love.thread.newThread to accept a literal string of code.
  • Updated love-created threads to use names visible in external debuggers.
  • Updated SpriteBatch:unbind / SpriteBatch:flush to use less VRAM if the SpriteBatch has the static usage hint.
  • Updated love.graphics.newImage, love.image.newImageData, etc. to leave less temporary Lua-owned memory around.
  • Updated love.graphics.push to accept different stack types to push. Current types are "transform" and "all".
  • Updated love shaders to accept GLSL ES precision qualifiers (lowp, mediump, and highp) on variables, although they do nothing.
  • Updated the error message for love.graphics.newShader to be less cryptic if an invalid filename is given.
  • Updated compressed texture loading code to support BC6 and BC7 compressed textures (if the graphics driver supports them.)

New in LOVE 0.9.1 (Apr 2, 2014)

  • Additions:
  • Added love.getVersion.
  • Added love.system.openURL.
  • Added "screen" BlendMode.
  • Added Source:clone.
  • Added ParticleSystem:clone.
  • Added ParticleSystem:moveTo, has smoother emitter movement compared to ParticleSystem:setPosition.
  • Added ParticleSystem:setRelativeRotation.
  • Added love.graphics.setWireframe and love.graphics.isWireframe for debugging.
  • Added Mesh:setDrawRange and Mesh:getDrawRange.
  • Added Mesh:setTexture, SpriteBatch:setTexture, and ParticleSystem:setTexture. Accepts Canvases and Images.
  • Added high-dpi window support for Retina displays in OS X, via the 'highdpi' window flag.
  • Added love.window.getPixelScale.
  • Added love.graphics.getSystemLimit.
  • Added antialiasing support to Canvases.
  • Added Canvas:getFSAA.
  • Added love_ScreenSize built-in shader variable.
  • Added support for gamma-correct rendering.
  • Added a boolean srgb window setting to love.conf and love.window.setMode.
  • Added variant of love.graphics.newImage which interprets the image in the sRGB colorspace.
  • Added a new TextureFormat "srgb" for use with Canvases.
  • Added love.graphics.isSupported("srgb")
  • Added love.math.gammaToLinear and love.math.linearToGamma.
  • Added RandomGenerator:getState and RandomGenerator:setState.
  • Added CircleShape:getPoint and CircleShape:setPoint.
  • Added Body:setUserData and Body:getUserData.
  • Added some missing obscure KeyConstants.
  • Added optional callback argument to love.filesystem.getDirectoryItems.
  • Deprecations:
  • Deprecated Mesh:setImage, SpriteBatch:setImage, and ParticleSystem:setImage.
  • Deprecated love.graphics.getMaxImageSize and love.graphics.getMaxPointSize.
  • Fixes:
  • Fixed love.graphics.scale with negative values causing incorrect line widths.
  • Fixed Joystick:isDown using 0-based button index arguments.
  • Fixed love.graphics.setCanvas() to restore the proper viewport and scissor rectangles.
  • Fixed TrueType font glyphs which request a monochrome bitmap pixel mode.
  • Fixed love.graphics.reset causing crashes when called in between love.graphics.push/pop.
  • Fixed tab characters ("\t") to display properly with love.graphics.print.
  • Fixed love.graphics.isCreated to return false if love.window.setMode fails.
  • Fixed love.window.setMode to only destroy OpenGL resources after checking if a fullscreen size is supported.
  • Fixed loading BC4 compressed textures.
  • Fixed World:getBodyList and World:getJointList causing hard crashes.
  • Fixed Fixture:setUserData and Fixture:getUserData to work in coroutines.
  • Fixed Source:setPitch to error when infinity or NaN is given.
  • Fixed SoundData objects being initialized with garbage sample values.
  • Fixed 8-bit SoundData samples when used with love.audio Sources.
  • Other Changes:
  • Updated t.console in love.conf to create the console before modules are loaded in Windows.
  • Updated the default love.run code to make initial love.math.random calls more random.
  • Updated the error text for love.filesystem’s module searchers when require fails.
  • Updated the love.filesystem module searchers to be tried after package.preload instead of before.
  • Updated love.filesystem's C library loader to look in paths added via love.filesystem.mount, in Fused mode.
  • Updated love.graphics.newParticleSystem, love.graphics.newSpriteBatch, and love.graphics.newMesh to accept Canvases.
  • Updated Canvas drawing code, texture coordinates are no longer flipped vertically.
  • Updated Canvas:renderTo to work properly if a Canvas is currently active.
  • Updated ParticleSystem:setEmissionRate to accept non-integer numbers.
  • Updated Mesh vertex maps (index buffers) to use less VRAM space.
  • Updated love.graphics.newMesh and Mesh:setVertices to default the UV parameters to 0,0.
  • Updated fullscreen-desktop and resizable window modes in OS X to use Mac OS 10.7's fullscreen Spaces.
  • Updated Source:play to return a boolean indicating success.

New in LOVE 0.9.0 (Dec 14, 2013)

  • Additions:
  • Added better multiplayer networking support with ENet (via the lua-enet library.)
  • Added --fused command line argument, to simulate fusing.
  • Added liblove.
  • Added the ability to have exit values.
  • Added exit value of 1 in case of error by default.
  • Added basic support for the file:// URI scheme.
  • Added love.timer.getAverageDelta.
  • Added Data:getString.
  • Added Contact:getChildren.
  • Added love.filesystem.isFused.
  • Added love.filesystem.getIdentity.
  • Added love.filesystem.append.
  • Added love.filesystem.getSize.
  • Added love.filesystem.mount and love.filesystem.unmount.
  • Added an optional file search order parameter to love.filesystem.setIdentity.
  • Added File:isOpen and File:getMode.
  • Added File:setBuffer, File:getBuffer, and File:flush.
  • Added textinput event for unicode text input.
  • Added love.keyboard.setTextInput and love.keyboard.hasTextInput.
  • Added previously internal Rasterizer and GlyphData methods.
  • Added support for UTF-8 Image Fonts.
  • Added Font:getAscent, Font:getDescent, and Font:getBaseline.
  • Added Font:setFilter and Font:getFilter.
  • Added Font:hasGlyphs.
  • Added angle, scale, and shear parameters to love.graphics.printf.
  • Added support for high dynamic range (HDR) Canvases.
  • Added mipmapping support to Images (has love.graphics.isSupported test).
  • Added vertex shader support.
  • Added boolean support to Shader:send.
  • Added Canvas:getPixel.
  • Added BlendMode "replace".
  • Added line join modes.
  • Added Mesh objects, allowing for arbitrary textured polygons.
  • Added multiple render target support to love.graphics.setCanvas.
  • Added love.graphics.setColorMask.
  • Added love.graphics.origin.
  • Added love.graphics.getRendererInfo.
  • Added love.graphics.getMaxImageSize.
  • Added SpriteBatch:getCount and SpriteBatch:getBufferSize.
  • Added SpriteBatch:getColor.
  • Added ParticleSystem:emit.
  • Added ParticleSystem:setInsertMode.
  • Added ParticleSystem:setAreaSpread.
  • Added ParticleSystem:isPaused and ParticleSystem:isStopped.
  • Added many ParticleSystem getter methods.
  • Added DXT compressed texture support to Images via love.image.newCompressedData.
  • Added love.image.isCompressed and Image:isCompressed.
  • Added Image:getDimensions, Canvas:getDimensions, and ImageData:getDimensions.
  • Added anisotropic filtering support for Images, Canvases, and Fonts.
  • Added Image:refresh.
  • Added Image:getData.
  • Added love.math module.
  • Added a platform-independent (good) random implementation to love.math.
  • Added RandomGenerator objects.
  • Added BezierCurve objects.
  • Added love.math.triangulate and love.math.isConvex.
  • Added love.math.noise.
  • Added love.system module.
  • Added love.system.getClipboardText and love.system.setClipboardText.
  • Added love.system.getOS and love.system.getProcessorCount.
  • Added love.window module.
  • Added love.window.isVisible.
  • Added flags to love.window.setMode.
  • Added monitor choosing support to love.window.setMode.
  • Added support for resizable, borderless, and non-centered windows.
  • Added support for "fullscreen-desktop" mode.
  • Added window resize and visible events.
  • Added love.window.getIcon.
  • Added t.window.icon to love.conf.
  • Added SoundData:getDuration and SoundData:getSampleCount.
  • Added Source:isPlaying.
  • Added Source:setRelative and Source:isRelative.
  • Added Source:setCone and Source:getCone.
  • Added Source:getChannels.
  • Added new Channels API for love.thread.
  • Added limited table support to Channel:push.
  • Added Thread:getError.
  • Added Thread:isRunning.
  • Added threaderror event.
  • Added love.mousefocus and love.window.hasMouseFocus.
  • Added custom hardware cursor support via love.mouse.newCursor.
  • Added love.mouse.setX and love.mouse.setY.
  • Added Joystick objects.
  • Added joystick add and remove events.
  • Added joystick axis and hat move events.
  • Added unified Gamepad API for joysticks which have a similar layout to the Xbox controller.
  • Added joystick vibration support.
  • OPTIONAL: Added support for Game Music Emu.
  • Removals:
  • Removed release mode (but Fused mode is still there.)
  • Removed love.keyboard.getKeyRepeat (see love.keyboard.hasKeyRepeat).
  • Removed the unicode argument from love.keypressed (see love.textinput).
  • Removed love.graphics.drawTest.
  • Removed love.graphics.quad and love.graphics.triangle.
  • Removed ColorModes and love.graphics.setColorMode.
  • Removed love.graphics.newStencil.
  • Removed love.graphics.setLine and love.graphics.setPoint.
  • Removed love.graphics.drawq (functionality is merged into love.graphics.draw).
  • Removed SpriteBatch:addq and SpriteBatch:setq (functionality is merged into SpriteBatch:add and SpriteBatch:set).
  • Removed Quad:flip.
  • Removed ParticleSystem:isFull and ParticleSystem:isEmpty.
  • Removed ParticleSystem:getX and ParticleSystem:getY.
  • Removed love.graphics.checkMode.
  • Removed love.joystick module functions which operated on individual joysticks (see Joystick objects).
  • Removed joystick ball support.
  • Removed thread names.
  • Removed old thread messaging API (see Channels).
  • Removed love.timer.getMicroTime.
  • Renamed APIs:
  • Renamed love's boot script to 'love.boot', which can be required.
  • Renamed love.filesystem.mkdir to love.filesystem.createDirectory.
  • Renamed love.filesystem.enumerate to love.filesystem.getDirectoryItems.
  • Renamed World:setAllowSleeping and World:getAllowSleeping to World:setSleepingAllowed and World:isSleepingAllowed.
  • Renamed ChainShape:setPrevVertex to ChainShape:setPreviousVertex.
  • Renamed Joint:enableMotor to Joint:setMotorEnabled.
  • Renamed Joint:enableLimit and Joint:isLimitEnabled to Joint:setLimitsEnabled and Joint:hasLimitsEnabled.
  • Renamed t.screen to t.window in love.conf.
  • Renamed love.graphics.setCaption to love.window.setTitle.
  • Renamed PixelEffect to Shader (but now with vertex shaders).
  • Renamed love.graphics.setDefaultImageFilter to love.graphics.setDefaultFilter.
  • Renamed ParticleSystem:setSprite to ParticleSystem:setImage.
  • Renamed ParticleSystem:setGravity to ParticleSystem:setLinearAcceleration.
  • Renamed ParticleSystem:setLifetime and ParticleSystem:setParticleLife to ParticleSystem:setEmitterLifetime and ParticleSystem:setParticleLifetime.
  • Renamed ParticleSystem:count and all getNum* functions to get*Count.
  • Renamed SoundData:getBits and Decoder:getBits to SoundData:getBitDepth and Decoder:getBitDepth.
  • Renamed Source:setDistance and Source:getDistance to Source:setAttenuationDistances and Source:getAttenuationDistances.
  • Renamed love.mouse.setGrab to love.mouse.setGrabbed.
  • Fixes:
  • Fixed fused mode in OS X.
  • Fixed printing to the console in Windows before love.load is called.
  • Fixed the default love.run to not include the time taken by love.load in the first frame's dt calculation.
  • Fixed the error screen not always appearing until the next input event.
  • Fixed love.event.clear.
  • Fixed love.mouse.setPosition when called in love.load.
  • Fixed scaling in several love.physics functions.
  • Fixed Box2D exception in World:update.
  • Fixed many uncaught Box2D / love.physics exceptions for Bodies and Joints.
  • Fixed ChainShape:getPoints running out of Lua stack space and crashing.
  • Fixed File:read reading past end of file.
  • Fixed love.filesystem.setIdentity not removing read access from old directories.
  • Fixed possible memory leak in UTF-8 decoder.
  • Fixed spacing for the last character in an Image Font.
  • Fixed line wrapping in love.graphics.printf.
  • Fixed love.graphics.printf to error if the wrap limit is negative.
  • Fixed love.graphics.print truncating strings with embedded zeros.
  • Fixed crashes with font drawing on some ATI cards.
  • Fixed artifacts when drawing lines at huge scale.
  • Fixed Fonts and Canvases ignoring default image filter.
  • Fixed love.graphics.getLineWidth returning incorrect values.
  • Fixed love.graphics.getColor on some Windows systems.
  • Fixed alpha BlendMode.
  • Fixed multiplicative BlendMode.
  • Fixed love.graphics.getPointStyle.
  • Fixed line numbers in Shader errors.
  • Fixed Shader:send with Images and Canvases failing sometimes.
  • Fixed Shader:send to keep a reference to sent Images and Canvases.
  • Fixed crash when binding SpriteBatches multiple times.
  • Fixed SpriteBatches with more than 16,384 sprites.
  • Fixed draw order for ParticleSystems.
  • Fixed ParticleSystem:setSizes resetting the size variation.
  • Fixed love.window.getMode and friends returning wrong values when using desktop size.
  • Fixed keyrepeat settings being lost after (indirect) love.window.setMode.
  • Fixed the icon being reset after love.window.setMode.
  • Fixed memory leak in the mp3 decoder.
  • Fixed sound issues with some versions of OpenAL soft, by enabling direct channels.
  • Fixed 'random' hangs in audio.
  • Fixed case (in)sensitivity of sound file extension parsing.
  • Fixed looping support in tracker music formats.
  • Fixed skipping/looping issues when playing streaming audio Sources.
  • Fixed a race condition in Source:play.
  • Fixed WAVE sound playback.
  • Other Changes:
  • Moved love's startup to modules/love.
  • Moved window-related functions from love.graphics to love.window.
  • Updated functions which return LOVE objects to re-use the Lua-side object instead of always recreating it.
  • Updated the windows console, it now tries to re-use an active one first.
  • Updated error handling, error handlers now get resolved when the error occurs.
  • Updated order of sleep/present in love.run (now draws, *then* sleeps).
  • Updated love.keyboard.setKeyRepeat to take a boolean argument instead of numbers.
  • Updated love.keypressed's second argument to indicate whether the keypress is a repeat.
  • Updated keyboard key constants with some modern keyboard keys.
  • Updated love.filesystem to try to create the appdata directory if it doesn't exist yet.
  • Updated the default filesystem identity to omit file extension.
  • Updated love.filesystem.newFile to optionally open the file.
  • Updated most love.filesystem functions to return nil, error on internal failure.
  • Updated love.graphics.print's x and y arguments to default to 0.
  • Updated the setFilter and setWrap methods, the second argument is now optional.
  • Updated Font and ParticleSystem rendering code, now more performant.
  • Updated SpriteBatch code, now more performant when adding/setting and (un)binding.
  • Updated Canvas code to support more systems.
  • Updated Canvas:getImageData and love.graphics.newScreenshot to be more efficient.
  • Updated love.graphics.newScreenshot to create a fully opaque image by default.
  • Updated error messages when sending bad values to Shaders.
  • Updated love.graphics.newParticleSystem to have a default buffer size of 1000.
  • Updated love.image.newImageData and love.graphics.newImage to accept FileData.
  • Updated ImageData:setPixel to accept a table and default to 255 alpha.
  • Updated ImageData:mapPixel, is now more efficient and now accepts optional x,y,w,h arguments.
  • Updated love.image memory handling, improves errors and thread-safety.
  • Updated love.audio.newSource, love.sound.newDecoder, and love.sound.newSoundData to accept FileData.
  • Updated allocation for SoundData, it's more efficient and less wasteful.
  • Updated SoundData:setSample and SoundData:getSample to error for invalid samples.
  • Updated Source:set* functions to default z to 0.
  • Updated Source:seek to error for negative offsets.
  • Updated Thread:start to accept arguments. The arguments are available in the thread via ... (the vararg expression.)
  • Updated love.timer.getFPS to be microsecond-accurate.
  • Updated love.timer.getTime to be microsecond-accurate and monotonic.
  • Updated Box2D to version 2.3.

New in LOVE 0.7.1 (Feb 15, 2011)

  • Added source:isPaused()
  • Added error when initial window can't be created.
  • Added framebuffer filter modes.
  • Added love.filesystem.getLastModified.
  • Added filter modes for ImageFonts.
  • Added dead key support by using "unknown" key with correct unicode value.
  • Added 0 width and height in love.conf. (for current desktop resolution)
  • Added alpha support when encoding TGA images.
  • Fixed a lot of bugs regarding zero characters in threads.

New in LOVE 0.6.2 (Mar 8, 2010)

  • Fixed a bug causing ImageFonts to cut off some pixels.
  • Fixed a bug where filled rectangles were too small.
  • Fixed a bug in Image:setFilter where it would switch the parameters.
  • Fixed a bug in ImageRasterizer where it wasn't using the data.
  • Image filter and wrap modes now use string constants as well.
  • Fixed double-transform bug in SpriteBatch.
  • Errors are reported on stdout again.
  • Another fix for the icons on Ubuntu.