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.