no-game screen

The codename for LÖVE 11.0 is Mysterious Mysteries. It is currently released.

Changes from 0.10.2


Renamed APIs

All renamed APIs in 11.0 are deprecated rather than removed, until the next major release.

Other Deprecations


Other changes

  • Changed high-dpi functionality to require much less code (often none at all) for graphics to appear at the correct sizes and positions.
  • Changed love.graphics.print and friends to ignore carriage returns.
  • Changed the 'multiply' BlendMode to error if not used with the 'premultiplied' BlendAlphaMode, since the formula only works with that anyway.
  • Changed the matrix variant of Shader:send to interpret the matrix as row-major by default, instead of column-major.
  • Changed the variant of Canvas:newImageData which accepts x/y/width/height to also require slice and mipmap index parameters, which are used when the Canvas isn't a 2D type or has mipmaps.
  • Changed some love.graphics, love.window, and love.event APIs to cause an error if a Canvas is active.
  • Changed stenciling functionality with a Canvas active to require stencil=true (or a custom stencil-formatted Canvas) to be set in love.graphics.setCanvas.
  • Changed Mesh:setDrawRange to take 'start' and 'count' parameters instead of 'min' and 'max'.
  • Changed the variant of love.image.newImageData which takes dimension arguments to take an optional PixelFormat argument as well.
  • Changed the 'vsync' field of love.window.setMode and t.window in love.conf. It's now an integer with 0 disabling vsync.
  • Changed Channel and love.event.push table serialization to accept non-flat tables and detect cycles, cycles now cause an error rather than a stack overflow.
  • Changed Sources to either be playing or not playing, rather than playing, paused, or stopped. Source:stop now pauses and rewinds the Source.
  • Changed love.audio.pause() to return a list of Sources that have been paused by that call.
  • Changed Source seeking behaviour, all kinds of Sources now behave similarly when seeking past the boundaries.
  • Changed love.timer.step to return the calculated delta time.
  • Changed love.run and love.errorhandler to return a function for their main loop, which gets called until love quits.
  • Changed enet to no longer set the 'enet' global.
  • Changed love.keyboard.isDown and love.keyboard.isScancodeDown to error if an invalid enum value is given.
  • Updated and improved command line argument handling.
  • Updated the boot sequence to show an error instead of the no-game screen, if a nonexistant folder is passed in as the source game directory.
  • Updated 'love.exe --version' on Windows to print to the parent console.
  • Updated Android print rerouting and JIT compilation disabling to apply inside threads.
  • Updated invalid enum value error messages to show a list of the valid enum values.
  • Updated Source:seek to work if the Source isn't playing.
  • Updated love.math.random to have improved numeric distribution.
  • Updated love.graphics to support Core Profile OpenGL 3.3+ when available.
  • Updated SpriteBatches to automatically grow their buffer when they run out of space.
  • Updated Shaders to always expose derivative functions (dFdx, dFdy, fwidth) when available in OpenGL ES.
  • Updated Shaders to allow using VERTEX and PIXEL as variable names in shader code.
  • Updated love.graphics.circle, love.graphics.ellipse, love.graphics.arc, and love.graphics.rectangle to take transformation scale into account when determining the number of segments to use.
  • Updated the error message when bad values are given to love.graphics.line.
  • Updated Font glyph generation to improve antialiasing.
  • Updated Canvas:newImageData to return an ImageData with a format that matches the Canvas' as closely as possible.
  • Updated love.graphics.newImage to treat file names ending with "@2x", "@3x", etc. as a pixel density scale factor if none is explicitly supplied.
  • Updated the maximum love.graphics transformation/state stack depth from 64 to 128.
  • Updated the default error handler to allow copying the error to the clipboard when the user decides to do so.
  • Updated love.filesystem.setRequirePath to support multiple template '?' characters in each path.
  • Updated luasocket to version 3.0rc1.
  • Updated love.joystick.loadGamepadMappings so it doesn't error when given an empty string.
  • Updated love.joystick.setGamepadMapping to use the controller's name for the new mapping when possible.

Performance Improvements

  • Improved performance when drawing Textures, shapes, lines, and points by automatically batching their draw calls together when possible.
  • Improved performance of Shader:send when the Shader is not active.
  • Improved performance of love.math.randomNormal when LuaJIT's JIT compiler is enabled.
  • Improved performance of love.filesystem.lines and File:lines, especially when reading from a file inside a zip/.love.