LÖVE Changelog

What's new in LÖVE 11.5

Dec 3, 2023
  • Added "LÖVE Loader" launcher on Android for easier loading of .love files.
  • Changed iOS game selector to alphabetically sort the list of .love files.
  • Changed JIT compilation on macOS arm64 (Apple Silicon) to be off by default, since performance and available JIT memory isn't reliable.
  • Fixed inconsistent and buggy behaviour of 'pairs' by updating LuaJIT.
  • Fixed "unexpected alignment" errors when running love on some 32 bit Linux systems.
  • Fixed running fused games on Windows when the executable has been code-signed.
  • Fixed undefined behaviour in love.data.hash's implementation.
  • Fixed writing files when a symlink exists in the save directory's path.
  • Fixed love.threaderror not being called if the error message is an empty string.
  • Fixed a race condition when a Thread is destroyed immediately after Thread:start.
  • Fixed unexpectedly slow first frames on macOS.
  • Fixed love.joystick.setGamepadMapping when replacing an existing mapping.
  • Fixed love.joystick.getGamepadMappingString.
  • Fixed duplicate platform fields in love.joystick.saveGamepadMappings.
  • Fixed DistanceJoint type information.
  • Fixed time drift in Source:tell after a Source loops.
  • Fixed audio not always pausing when the app is minimized on Android.
  • Fixed RecordingDevice:start to return false instead of hard-crashing on iOS.
  • Fixed identical frames in Ogg Theora videos being skipped.
  • Fixed love.font.newBMFontRasterizer's single file parameter variant.
  • Fixed the original window size not always being restored when exiting fullscreen on Linux.
  • Fixed some cases of framerate hitches in Windows when vsync is enabled in windowed mode.
  • Fixed colors appearing over-saturated on P3 displays in macOS.
  • Fixed textures looking washed out when gamma-correct rendering is used on some Android devices.
  • Fixed images with mipmaps when ANGLE is used with an AMD GPU.
  • Fixed line rendering when duplicate points are used in the line.
  • Fixed line rendering with miter and bevel line join modes when antiparallel lines are formed.
  • Fixed a crash when calling Text:add with an empty string parameter.

New in LÖVE 11.4 (Jan 4, 2022)

  • Added native arm64 support on macOS.
  • Added a variant of love.filesystem.newFileData which accepts a Data object.
  • Added Body:getLocalPoints.
  • Added Font:getKerning.
  • Added support for r16, rg16, and rgba16 pixel formats in Canvases.
  • Added Shader:send(name, matrixlayout, data, ...) variant, whose argument order is more consistent than Shader:send(name, data, matrixlayout, ...).
  • Changed all builds and platforms where LOVE provides LuaJIT to use LuaJIT 2.1 instead of 2.0.
  • Changed love.timer.getTime to start at 0 when the module is first loaded.
  • Changed certain out-of-Lua-memory situations to show a message box instead of instantly crashing.
  • Changed the naming scheme of LOVE's embedded Lua files for improved integration with Lua chunkname APIs.
  • Fixed build-time compatibility with Lua 5.4.
  • Fixed code compatibility with math.mod and string.gfind when LuaJIT 2.1 is used.
  • Fixed errors on some systems related to > 53 bit pointer addresses, when recent versions of LuaJIT 2.1 are used.
  • Fixed the default error handler showing a blank screen on some mobile devices.
  • Fixed drag-and-drop to open a love game on macOS causing love.event.quit("restart") to fail.
  • Fixed fused macOS apps opening other love games when drag-and-drop is used (if the fused app hasn't already removed .love files from recognized document types).
  • Fixed File:isEOF when called on a dropped file.
  • Fixed support for > 2GB dropped files on desktops.
  • Fixed ByteData and DataView missing Data:clone implementations.
  • Fixed love.physics meter scale value persisting after love.event.quit("restart").
  • Fixed audio to resume properly after interruption on iOS.
  • Fixed love.graphics.newVideo to error instead of crash when an invalid video file is given.
  • Fixed initial window creation to set the window's title during creation instead of after.
  • Fixed the window's screen position when exiting fullscreen via love.window.setFullscreen.
  • Fixed love.displayrotated being given a boolean instead of an enum string.
  • Fixed memory corruption and a crash when drawing smooth lines.
  • Fixed a crash in Canvas:newImageData when the pixel format's pixel byte size multiplied by its width isn't a multiple of 4.
  • Fixed love.graphics.newVolumeImage when explicit mipmaps are provided.
  • Fixed freezes and crashes in automatic batching when an AMD GPU is used.
  • Fixed love.graphics.print and Image:replacePixels on more AMD/ATI GPUs.
  • Fixed Font:setFallbacks to account for different DPI scales in each fallback font.
  • Fixed Font:getWrap to not remove trailing newlines.
  • Fixed Text:getWidth when the Text's string only contains spaces.
  • Fixed a crash with some Intel graphics drivers on Linux.
  • Fixed a hang with some Intel graphics drivers on Windows, by preventing gamma correct rendering on affected systems.
  • Fixed a crash with some Intel graphics drivers on Windows when mipmapped Canvases are used.
  • Fixed texture memory reported by love.graphics.getStats when a volume or array Canvas is created.
  • Fixed DXT1 textures which use 1 bit alpha-cutout.
  • Fixed rare issues where textures were not sent to shaders correctly.
  • Fixed Shader:send(name, data, matrixlayout, ...).
  • Fixed quad offsets in ParticleSystems when ParticleSystem:setOffset is not used.
  • Fixed a performance issue with setting a small subrange of data in non-stream Meshes and SpriteBatches.
  • Fixed rounded rectangles breaking if the rx or ry parameters are negative.
  • Fixed rounded rectangle automatic points calculation when rx or ry are more than half the rectangle's size.
  • Fixed source code compilation on Xcode 12+.
  • Fixed source code compilation on Linux systems that don't provide posix_spawn APIs.

New in LÖVE 11.3 (Nov 3, 2021)

  • Added support for FLAC audio files.
  • Added support for microphone recording on Android.
  • Added t.audio.mic (false by default). On Android, setting it to true requests microphone recording permission from the user.
  • Added Decoder:clone.
  • Added Data:getFFIPointer.
  • Added Joystick:getDeviceInfo.
  • Added Joystick:getGamepadMappingString and love.joystick.getGamepadMappingString(guid).
  • Added love.math.colorToBytes and love.math.colorFromBytes.
  • Added 'usedpiscale' boolean (true by default) to love.window.setMode and love.conf. Disables automatic DPI scaling when false.
  • Added love.window.getDisplayOrientation and a love.displayrotated callback.
  • Added love.window.get/setVSync, to allow setting vsync without recreating the window.
  • Added love.window.getSafeArea.
  • Added an optional vertex count parameter to Mesh:setVertices.
  • Added support for rgba4, rgb5a1, rgb565, rgb10a2, rg11b10f, r8, rg8, r16, rg16, r16f, rg16f, r32f, and rg32f formats in ImageData and Images.
  • Added support for loading .dds files that contain uncompressed pixel data.
  • Changed audio file type detection, so it probes all supported backends for unrecognized extensions.
  • Fixed "bad lightuserdata" errors when running love on some arm64 devices.
  • Fixed boot.lua's line numbers in stack traces to match its source code.
  • Fixed the deprecation system not fully restarting when love.event.quit("restart") is used.
  • Fixed love.isVersionCompatible.
  • Fixed named Channels persisting across love.event.quit("restart") occurrences.
  • Fixed race conditions when different love.physics Worlds are used in different threads.
  • Fixed World:getJoints to return the fully resolved type of the Joint, instead of the base type.
  • Fixed love.timer.sleep(0) to return control to the OS scheduler instead of being a no-op.
  • Fixed love.math.randomNormal incorrectly using cached state after love.math.setRandomSeed or setRandomState.
  • Fixed love.data.hash returning an incorrect hash for certain input sizes.
  • Fixed love.data.newByteData to cause a Lua error instead of crashing when invalid arguments are used.
  • Fixed the Data-returning variant of love.filesystem.read and File:read to return the number of bytes that were read.
  • Fixed love.filesystem's require loaders to error instead of crashing when no argument is given.
  • Fixed love.filesystem.mount(Data).
  • Fixed a memory leak when loading files in some situations.
  • Fixed t.audio.mixwithsystem.
  • Fixed audio clicks immediately after playing a Source on iOS.
  • Fixed Source:play + Source:stop + Source:play looping the first few ms of sound for streaming Sources on iOS.
  • Fixed Source:play + Source:seek looping the first few ms of sound for streaming Sources on iOS.
  • Fixed occasional pops in streaming sources on iOS.
  • Fixed love.audio.play(sources) to use previously set playback positions on stopped Sources.
  • Fixed Source:setEffect(name, true) and Source:getEffect(name) when the effect has no associated Filter.
  • Fixed love.audio.newSource(filename, "queue") to cause a Lua error.
  • Fixed Source:setPitch to error if the given pitch is <= 0, NaN, or infinity.
  • Fixed video seeking and pausing in various scenarios.
  • Fixed an audio Source memory leak when a Video gets garbage collected after playing it.
  • Fixed video playback support on some Adreno-based Android devices.
  • Fixed black fringes around text in some situations.
  • Fixed extreme flickering when text moves along non-integer coordinates.
  • Fixed the first character in a string sometimes not being processed during text vertex generation.
  • Fixed Text:set(" ") not clearing any previously set text in a Text object.
  • Fixed love.graphics.getTextureTypes to return a table with boolean values in its fields instead of number values.
  • Fixed lines not rendering properly if a single line has more than 65,000 vertices.
  • Fixed a pixel shader performance regression on some graphics drivers when OpenGL 3 or OpenGL ES 3 is used.
  • Fixed text not showing up on Radeon HD 3000-series graphics cards on Windows.
  • Fixed non-integer DPI scale values being truncated to integers in love.graphics.newCanvas.
  • Fixed creating depth canvases on Windows systems when using an Intel HD 3000 GPU.
  • Fixed automatic batching performance to be more consistent on all operating systems.
  • Fixed gammaToLinearPrecise in shaders not being as precise as it should be.
  • Fixed ImageData:paste and ImageData:setPixel to have more consistent clamping and rounding of color values when different formats are used.