Difference between revisions of "11.0"
(Updated changelog) |
m (→Additions) |
||
(31 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[File:11.0-NoGame.png|thumb|no-game screen]] | |
− | + | The codename for LÖVE 11.0 is '''Mysterious Mysteries'''. It is currently '''<span style="color:#0000ff;">released</span>'''. | |
− | The codename for LÖVE | ||
== Changes from [[0.10.2]] == | == Changes from [[0.10.2]] == | ||
Line 12: | Line 11: | ||
* Added [[love.audio.newQueueableSource|queueable audio Sources]]. | * Added [[love.audio.newQueueableSource|queueable audio Sources]]. | ||
* Added [[RecordingDevice|microphone recording]] support. | * Added [[RecordingDevice|microphone recording]] support. | ||
− | * Added low | + | * Added low pass, high pass, and band pass [[Source:setFilter|filters]] to love.audio [[Source]]s. |
− | * Added audio [[ | + | * Added audio [[Source:setEffect|effect]] APIs (reverb, echo, etc.) |
* Added variants of [[SoundData:getSample]] and [[SoundData:setSample]] which take a channel index parameter. | * Added variants of [[SoundData:getSample]] and [[SoundData:setSample]] which take a channel index parameter. | ||
+ | * Added variants of [[love.audio.play]], [[love.audio.pause]], and [[love.audio.stop]] which take a list of [[Source]]s. | ||
+ | * Added [[love.system.hasBackgroundMusic]]. | ||
* Added variants of all table-with-fields-returning get* functions, the new variants take an existing table to fill in. | * Added variants of all table-with-fields-returning get* functions, the new variants take an existing table to fill in. | ||
* Added a variant to [[World:update]] for controlling the number of internal iterations to perform. | * Added a variant to [[World:update]] for controlling the number of internal iterations to perform. | ||
+ | * Added [[Body:isTouching]]. | ||
* Added [[RopeJoint:setMaxLength]]. | * Added [[RopeJoint:setMaxLength]]. | ||
* Added a click count argument to [[love.mousepressed]] and [[love.mousereleased]]. | * Added a click count argument to [[love.mousepressed]] and [[love.mousereleased]]. | ||
+ | * Added variants of [[love.filesystem.mount]] which accept a [[Data]] or [[FileData]] object containing zipped data. | ||
* Added [[love.filesystem.getInfo]] (replaces [[love.filesystem.exists]] / [[love.filesystem.isFile|isFile]] / [[love.filesystem.isDirectory|isDirectory]] / [[love.filesystem.isSymlink|isSymlink]] / [[love.filesystem.getLastModified|getLastModified]] / [[love.filesystem.getSize|getSize]]). | * Added [[love.filesystem.getInfo]] (replaces [[love.filesystem.exists]] / [[love.filesystem.isFile|isFile]] / [[love.filesystem.isDirectory|isDirectory]] / [[love.filesystem.isSymlink|isSymlink]] / [[love.filesystem.getLastModified|getLastModified]] / [[love.filesystem.getSize|getSize]]). | ||
* Added [[love.filesystem.setCRequirePath]] and [[love.filesystem.getCRequirePath]], and use that to find C libraries for require. | * Added [[love.filesystem.setCRequirePath]] and [[love.filesystem.getCRequirePath]], and use that to find C libraries for require. | ||
− | * Added [[Channel:hasRead]], which checks if a message has been read. Takes an id, which Channel:push will now return. | + | * Added variants of [[(File):read|File:read]] and [[love.filesystem.read]] which take an enum to determine whether they return a [[FileData]] or a string. |
+ | * Added [[Channel:hasRead]], which checks if a message has been read. Takes an id, which [[Channel:push]] will now return. | ||
* Added variants of [[Channel:demand]] and [[Channel:supply]] which take a timeout argument. | * Added variants of [[Channel:demand]] and [[Channel:supply]] which take a timeout argument. | ||
* Added a default [[love.threaderror]] callback, which raises the error in the main thread. | * Added a default [[love.threaderror]] callback, which raises the error in the main thread. | ||
− | * Added [[love.data]] module. It includes hex/base64 [[love.data.encode|encoding functions]], MD5 and SHA [[love.data.hash|hashing]], [[love.data. | + | * Added [[love.data]] module. It includes hex/base64 [[love.data.encode|encoding functions]], MD5 and SHA [[love.data.hash|hashing]], [[love.data.pack|string packing]], [[love.data.compress|compression APIs]], and more. |
* Added [[Transform]] objects to [[love.math]]. | * Added [[Transform]] objects to [[love.math]]. | ||
* Added support for different [[ImageData]] [[PixelFormat]]s, including RGBA8 (the default), RGBA16, RGBA16F, and RGBA32F. | * Added support for different [[ImageData]] [[PixelFormat]]s, including RGBA8 (the default), RGBA16, RGBA16F, and RGBA32F. | ||
Line 32: | Line 36: | ||
* Added [[Texture:getPixelWidth]], [[Texture:getPixelHeight]], [[love.graphics.getPixelWidth]], and [[love.graphics.getPixelHeight]]. | * Added [[Texture:getPixelWidth]], [[Texture:getPixelHeight]], [[love.graphics.getPixelWidth]], and [[love.graphics.getPixelHeight]]. | ||
* Added [[Texture:getDPIScale]], [[love.graphics.getDPIScale]], and [[Font:getDPIScale]]. | * Added [[Texture:getDPIScale]], [[love.graphics.getDPIScale]], and [[Font:getDPIScale]]. | ||
− | * Added Array, Cubemap, and Volume [[TextureType]]s | + | * Added [[Texture:getMipmapCount]], [[Texture:getFormat|getFormat]], [[Texture:getLayerCount|getLayerCount]], [[Texture:getDepth|getDepth]], and [[Texture:getTextureType|getTextureType]]. |
+ | * Added Array, Cubemap, and Volume [[TextureType]]s and corresponding [[Texture]] APIs. | ||
+ | * Added [[love.graphics.newArrayImage]], [[love.graphics.newVolumeImage|newVolumeImage]], [[love.graphics.newCubeImage|newCubeImage]], and variants to [[love.graphics.newCanvas]] for creating different texture types. | ||
* Added [[love.graphics.getTextureTypes]], which returns a table with fields indicating support for each [[TextureType]]. | * Added [[love.graphics.getTextureTypes]], which returns a table with fields indicating support for each [[TextureType]]. | ||
* Added [[(Image):replacePixels|Image:replacePixels]] (replaces [[(Image):refresh|Image:refresh]]). | * Added [[(Image):replacePixels|Image:replacePixels]] (replaces [[(Image):refresh|Image:refresh]]). | ||
* Added [[love.graphics.drawLayer]], [[SpriteBatch:addLayer]], and [[SpriteBatch:setLayer]] for easily drawing layers of [[TextureType|Array Textures]] | * Added [[love.graphics.drawLayer]], [[SpriteBatch:addLayer]], and [[SpriteBatch:setLayer]] for easily drawing layers of [[TextureType|Array Textures]] | ||
− | * Added variants of [[love.graphics.print]] and [[love.graphics.printf]] which take a [[Font]] argument | + | * Added variants of [[love.graphics.print]] and [[love.graphics.printf]] which take a [[Font]] argument. |
* Added mipmapping support to [[Canvas]]es, including both auto-generated mipmaps and manually rendering to a specific mipmap level. | * Added mipmapping support to [[Canvas]]es, including both auto-generated mipmaps and manually rendering to a specific mipmap level. | ||
* Added 'stencil8', 'depth24stencil8', 'depth32fstencil8', 'depth16', 'depth24', and 'depth32f' [[PixelFormat]]s for Canvases. | * Added 'stencil8', 'depth24stencil8', 'depth32fstencil8', 'depth16', 'depth24', and 'depth32f' [[PixelFormat]]s for Canvases. | ||
+ | * Added variant of [[love.graphics.newCanvas]] which accepts a table of settings. | ||
* Added optional 'readable' boolean field to the table passed into [[love.graphics.newCanvas]]. | * Added optional 'readable' boolean field to the table passed into [[love.graphics.newCanvas]]. | ||
* Added variant of [[love.graphics.getCanvasFormats]] which takes a 'readable' boolean. | * Added variant of [[love.graphics.getCanvasFormats]] which takes a 'readable' boolean. | ||
Line 48: | Line 55: | ||
* Added [[love.graphics.setFrontFaceWinding]]. | * Added [[love.graphics.setFrontFaceWinding]]. | ||
* Added variants of [[love.graphics.clear]] to control how the active depth and stencil buffers are cleared. | * Added variants of [[love.graphics.clear]] to control how the active depth and stencil buffers are cleared. | ||
+ | * Added [[love.graphics.applyTransform]] and [[love.graphics.replaceTransform]]. | ||
+ | * Added [[love.graphics.transformPoint]] and [[love.graphics.inverseTransformPoint]]. | ||
* Added [[love.graphics.getStackDepth]]. | * Added [[love.graphics.getStackDepth]]. | ||
* Added [[love.graphics.flushBatch]] for manually flushing automatically batched draws. | * Added [[love.graphics.flushBatch]] for manually flushing automatically batched draws. | ||
Line 57: | Line 66: | ||
* Added [[Shader:hasUniform]] (replaces [[Shader:getExternVariable]]). | * Added [[Shader:hasUniform]] (replaces [[Shader:getExternVariable]]). | ||
* Added support for non-square [[Shader]] uniform matrices on desktop platforms and on mobile GLSL 3. | * Added support for non-square [[Shader]] uniform matrices on desktop platforms and on mobile GLSL 3. | ||
− | * Added [[Shader:send]](matrixname, | + | * Added [[Shader:send]](matrixname, matrixlayout, matrix, ...) which specifies how to interpret the matrix table arguments. |
* Added [[Shader:send]] variants which accept a [[Data]] object. | * Added [[Shader:send]] variants which accept a [[Data]] object. | ||
* Added 'borderellipse' and 'borderrectangle' [[ParticleSystem]] distributions. | * Added 'borderellipse' and 'borderrectangle' [[ParticleSystem]] distributions. | ||
− | * Added [[ParticleSystem: | + | * Added variant of [[ParticleSystem:setEmissionArea]] which accepts an area angle and a flag for whether particle directions are relative to the center of the area. |
* Added [[love.graphics.captureScreenshot]] (replaces [[love.graphics.newScreenshot]]). | * Added [[love.graphics.captureScreenshot]] (replaces [[love.graphics.newScreenshot]]). | ||
* Added 'glsl3', 'instancing', 'fullnpot','pixelshaderhighp', and 'shaderderivatives' [[GraphicsFeature]]s. | * Added 'glsl3', 'instancing', 'fullnpot','pixelshaderhighp', and 'shaderderivatives' [[GraphicsFeature]]s. | ||
Line 73: | Line 82: | ||
* Added [[love.window.isMinimized]]. | * Added [[love.window.isMinimized]]. | ||
* Added [[love.window.restore]]. | * Added [[love.window.restore]]. | ||
− | + | * Added support for header-less DEFLATE to [[love.data.compress]]/[[love.data.decompress|decompress]]. | |
=== Renamed APIs === | === Renamed APIs === | ||
− | All renamed APIs in | + | All renamed APIs in 11.0 are deprecated rather than removed, until the next major release. |
* Renamed [[love.window.getPixelScale]] to [[love.window.getDPIScale]]. | * Renamed [[love.window.getPixelScale]] to [[love.window.getDPIScale]]. | ||
* Renamed [[love.mouse.hasCursor]] to [[love.mouse.isCursorSupported]]. | * Renamed [[love.mouse.hasCursor]] to [[love.mouse.isCursorSupported]]. | ||
+ | * Renamed [[ParticleSystem:setAreaSpread]] to [[ParticleSystem:setEmissionArea]]. | ||
* Renamed [[love.errhand]] to [[love.errorhandler]]. If love.errhand is defined and love.errorhandler isn't, it will continue to work. | * Renamed [[love.errhand]] to [[love.errorhandler]]. If love.errhand is defined and love.errorhandler isn't, it will continue to work. | ||
− | * Renamed [[Source:getChannels|Source]]/[[SoundData:getChannels|SoundData]]/Decoder:getChannels to [[Source:getChannelCount|Source]]/[[SoundData:getChannelCount|SoundData]]/[[Decoder:getChannelCount]]. | + | * Renamed [[Source:getChannels|Source]]/[[SoundData:getChannels|SoundData]]/[[Decoder:getChannels]] to [[Source:getChannelCount|Source]]/[[SoundData:getChannelCount|SoundData]]/[[Decoder:getChannelCount]]. |
* Renamed [[PrismaticJoint:hasLimitsEnabled]] and [[RevoluteJoint:hasLimitsEnabled]] to [[PrismaticJoint:areLimitsEnabled]] and [[RevoluteJoint:areLimitsEnabled]]. | * Renamed [[PrismaticJoint:hasLimitsEnabled]] and [[RevoluteJoint:hasLimitsEnabled]] to [[PrismaticJoint:areLimitsEnabled]] and [[RevoluteJoint:areLimitsEnabled]]. | ||
* Renamed [[love.audio.getSourceCount]] to [[love.audio.getActiveSourceCount]]. | * Renamed [[love.audio.getSourceCount]] to [[love.audio.getActiveSourceCount]]. | ||
− | |||
* Renamed all get[Object]List functions to get[Object]s. | * Renamed all get[Object]List functions to get[Object]s. | ||
Line 89: | Line 98: | ||
=== Other Deprecations === | === Other Deprecations === | ||
* Deprecated [[love.filesystem.exists]] / [[love.filesystem.isFile|isFile]] / [[love.filesystem.isDirectory|isDirectory]] / [[love.filesystem.isSymlink|isSymlink]] / [[love.filesystem.getLastModified|getLastModified]] / [[love.filesystem.getSize|getSize]] (use [[love.filesystem.getInfo]] instead). | * Deprecated [[love.filesystem.exists]] / [[love.filesystem.isFile|isFile]] / [[love.filesystem.isDirectory|isDirectory]] / [[love.filesystem.isSymlink|isSymlink]] / [[love.filesystem.getLastModified|getLastModified]] / [[love.filesystem.getSize|getSize]] (use [[love.filesystem.getInfo]] instead). | ||
+ | * Deprecated [[love.math.compress]] / [[love.math.decompress|decompress]] (use [[love.data.compress]] / [[love.data.decompress|decompress]] instead). | ||
=== Removals === | === Removals === | ||
* Removed the default source type for [[love.audio.newSource]]. | * Removed the default source type for [[love.audio.newSource]]. | ||
+ | * Removed [[Source:isStopped]] and [[Source:isPaused]]. Use [[Source:isPlaying]] instead. | ||
+ | * Removed [[Source:rewind]]. Use [[Source:stop]] or [[Source:seek|Source:seek(0)]] instead. | ||
+ | * Removed [[Source:resume]] and [[love.audio.resume]]. Use [[Source:play]] and [[love.audio.play]] instead. | ||
* Removed variant of [[love.filesystem.newFileData]] which takes base64 data, use [[love.data.decode]] instead. | * Removed variant of [[love.filesystem.newFileData]] which takes base64 data, use [[love.data.decode]] instead. | ||
* Removed the no-argument variant of [[Text:set]], use [[Text:clear]] instead. | * Removed the no-argument variant of [[Text:set]], use [[Text:clear]] instead. | ||
Line 100: | Line 113: | ||
* Removed [[Shader:getExternVariable]], use [[Shader:hasUniform]] instead. | * Removed [[Shader:getExternVariable]], use [[Shader:hasUniform]] instead. | ||
* Removed [[love.graphics.newScreenshot]], use [[love.graphics.captureScreenshot]] instead. | * Removed [[love.graphics.newScreenshot]], use [[love.graphics.captureScreenshot]] instead. | ||
+ | * Removed [[SpriteBatch:setBufferSize]], spritebatches now automatically grow when they run out of space. | ||
* Removed deprecated [[enet]] function host:socket_get_address. | * Removed deprecated [[enet]] function host:socket_get_address. | ||
* Removed functions deprecated in LÖVE 0.10.2: | * Removed functions deprecated in LÖVE 0.10.2: | ||
** Removed undocumented Shader:sendInt, Shader:sendBoolean, Shader:sentFloat, Shader:sendMatrix, and Shader:sendTexture methods (use [[Shader:send]] instead). | ** Removed undocumented Shader:sendInt, Shader:sendBoolean, Shader:sentFloat, Shader:sendMatrix, and Shader:sendTexture methods (use [[Shader:send]] instead). | ||
** Removed [[love.window.isCreated]] (use [[love.window.isOpen]] instead). | ** Removed [[love.window.isCreated]] (use [[love.window.isOpen]] instead). | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Other changes === | === Other changes === | ||
+ | * Windows XP is no longer officially supported. | ||
* Changed all color values to be in the range 0-1, rather than 0-255. This affects the following functions: | * Changed all color values to be in the range 0-1, rather than 0-255. This affects the following functions: | ||
** [[love.graphics.setColor]], [[love.graphics.getColor]], [[love.graphics.setBackgroundColor]], and [[love.graphics.getBackgroundColor]]. | ** [[love.graphics.setColor]], [[love.graphics.getColor]], [[love.graphics.setBackgroundColor]], and [[love.graphics.getBackgroundColor]]. | ||
** [[SpriteBatch:setColor]] and [[SpriteBatch:getColor]]. | ** [[SpriteBatch:setColor]] and [[SpriteBatch:getColor]]. | ||
** [[ParticleSystem:setColors]] and [[ParticleSystem:getColors]]. | ** [[ParticleSystem:setColors]] and [[ParticleSystem:getColors]]. | ||
+ | ** [[love.graphics.clear]]. | ||
** [[love.graphics.newMesh]], [[Mesh:setVertex]], and [[Mesh:getVertex]]. | ** [[love.graphics.newMesh]], [[Mesh:setVertex]], and [[Mesh:getVertex]]. | ||
** The colored text variants of [[love.graphics.print]], [[love.graphics.printf]], [[love.graphics.newText]], [[Text:set]], [[Text:setf]], [[Text:add]], and [[Text:addf]]. | ** The colored text variants of [[love.graphics.print]], [[love.graphics.printf]], [[love.graphics.newText]], [[Text:set]], [[Text:setf]], [[Text:add]], and [[Text:addf]]. | ||
Line 128: | Line 137: | ||
* Changed [[love.graphics.print]] and friends to ignore carriage returns. | * 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 '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 [[TextureType|type]] or has mipmaps. | ||
* Changed some [[love.graphics]], [[love.window]], and [[love.event]] APIs to cause an error if a [[Canvas]] is active. | * 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 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 [[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 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 [[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 the [[love.audio]] | + | * Changed [[Source]]s 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|love.audio.pause()]] to return a list of [[Source]]s that have been paused by that call. | ||
* Changed [[Source]] seeking behaviour, all kinds of Sources now behave similarly when seeking past the boundaries. | * 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.timer.step]] to return the calculated delta time. | ||
Line 141: | Line 154: | ||
* Updated and improved command line argument handling. | * 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 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 [[Source:seek]] to work if the [[Source]] isn't playing. | ||
* Updated [[love.math.random]] to have improved numeric distribution. | * Updated [[love.math.random]] to have improved numeric distribution. | ||
* Updated [[love.graphics]] to support Core Profile OpenGL 3.3+ when available. | * Updated [[love.graphics]] to support Core Profile OpenGL 3.3+ when available. | ||
+ | * Updated [[SpriteBatch]]es to automatically grow their buffer when they run out of space. | ||
* Updated [[Shader]]s to always expose derivative functions (dFdx, dFdy, fwidth) when available in OpenGL ES. | * Updated [[Shader]]s to always expose derivative functions (dFdx, dFdy, fwidth) when available in OpenGL ES. | ||
* Updated [[Shader]]s to allow using VERTEX and PIXEL as variable names in shader code. | * Updated [[Shader]]s to allow using VERTEX and PIXEL as variable names in shader code. | ||
Line 152: | Line 169: | ||
* Updated [[Canvas:newImageData]] to return an [[ImageData]] with a format that matches the [[Canvas]]' as closely as possible. | * 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 [[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 | + | * Updated the maximum [[love.graphics]] transformation/state [[love.graphics.push|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 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 [[love.filesystem.setRequirePath]] to support multiple template '?' characters in each path. | ||
* Updated [[socket|luasocket]] to version 3.0rc1. | * Updated [[socket|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 [[Texture]]s, 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|File:lines]], especially when reading from a file inside a zip/.love. | ||
Line 161: | Line 187: | ||
* Fixed an error in the default [[love.errhand|error handler]] when the error message contains non UTF-8 bytes. | * Fixed an error in the default [[love.errhand|error handler]] when the error message contains non UTF-8 bytes. | ||
* Fixed a memory leak when sending love [[Object]]s to threads which never load that object's module. | * Fixed a memory leak when sending love [[Object]]s to threads which never load that object's module. | ||
+ | * Fixed a memory leak in [[enet]] when peer:send fails. | ||
* Fixed os.execute always returning -1 in Linux. | * Fixed os.execute always returning -1 in Linux. | ||
* Fixed the default reference angle for [[WeldJoint]], [[PrismaticJoint]], and [[RevoluteJoint]]. | * Fixed the default reference angle for [[WeldJoint]], [[PrismaticJoint]], and [[RevoluteJoint]]. | ||
Line 177: | Line 204: | ||
* Fixed [[Video]] seeking to be faster. | * Fixed [[Video]] seeking to be faster. | ||
* Fixed [[BezierCurve]]s to error instead of hanging in some situations. | * Fixed [[BezierCurve]]s to error instead of hanging in some situations. | ||
− | * Fixed compilation of | + | * Fixed compilation of [[socket|luasocket]] with newer luajit 2.1.0 beta versions. |
[[Category:Versions]] | [[Category:Versions]] | ||
+ | {{#set:InternalVersion=110}} | ||
+ | {{#set:Codename=Mysterious Mysteries}} | ||
+ | {{#set:Status=<span style="color:#0000ff;">Released</span>}} | ||
+ | {{#set:ReleaseDate=2018-04-01}} |
Latest revision as of 10:25, 17 December 2019
The codename for LÖVE 11.0 is Mysterious Mysteries. It is currently released.
Contents
Changes from 0.10.2
Additions
- Added formal deprecation warnings, on by default for non-fused games.
- Added love.setDeprecationOutput and love.hasDeprecationOutput.
- Added Object:release.
- Added Data:clone.
- Added queueable audio Sources.
- Added microphone recording support.
- Added low pass, high pass, and band pass filters to love.audio Sources.
- Added audio effect APIs (reverb, echo, etc.)
- Added variants of SoundData:getSample and SoundData:setSample which take a channel index parameter.
- Added variants of love.audio.play, love.audio.pause, and love.audio.stop which take a list of Sources.
- Added love.system.hasBackgroundMusic.
- Added variants of all table-with-fields-returning get* functions, the new variants take an existing table to fill in.
- Added a variant to World:update for controlling the number of internal iterations to perform.
- Added Body:isTouching.
- Added RopeJoint:setMaxLength.
- Added a click count argument to love.mousepressed and love.mousereleased.
- Added variants of love.filesystem.mount which accept a Data or FileData object containing zipped data.
- Added love.filesystem.getInfo (replaces love.filesystem.exists / isFile / isDirectory / isSymlink / getLastModified / getSize).
- Added love.filesystem.setCRequirePath and love.filesystem.getCRequirePath, and use that to find C libraries for require.
- Added variants of File:read and love.filesystem.read which take an enum to determine whether they return a FileData or a string.
- Added Channel:hasRead, which checks if a message has been read. Takes an id, which Channel:push will now return.
- Added variants of Channel:demand and Channel:supply which take a timeout argument.
- Added a default love.threaderror callback, which raises the error in the main thread.
- Added love.data module. It includes hex/base64 encoding functions, MD5 and SHA hashing, string packing, compression APIs, and more.
- Added Transform objects to love.math.
- Added support for different ImageData PixelFormats, including RGBA8 (the default), RGBA16, RGBA16F, and RGBA32F.
- Added the ability to load Radiance HDR, OpenEXR, and 16 bit PNG images.
- Added love.graphics.getImageFormats (replaces love.graphics.getCompressedImageFormats).
- Added the ability to specify a per-object pixel density scale factor when creating Images, Canvases, Fonts, and Videos. Affects drawing.
- Added Texture:getPixelWidth, Texture:getPixelHeight, love.graphics.getPixelWidth, and love.graphics.getPixelHeight.
- Added Texture:getDPIScale, love.graphics.getDPIScale, and Font:getDPIScale.
- Added Texture:getMipmapCount, getFormat, getLayerCount, getDepth, and getTextureType.
- Added Array, Cubemap, and Volume TextureTypes and corresponding Texture APIs.
- Added love.graphics.newArrayImage, newVolumeImage, newCubeImage, and variants to love.graphics.newCanvas for creating different texture types.
- Added love.graphics.getTextureTypes, which returns a table with fields indicating support for each TextureType.
- Added Image:replacePixels (replaces Image:refresh).
- Added love.graphics.drawLayer, SpriteBatch:addLayer, and SpriteBatch:setLayer for easily drawing layers of Array Textures
- Added variants of love.graphics.print and love.graphics.printf which take a Font argument.
- Added mipmapping support to Canvases, including both auto-generated mipmaps and manually rendering to a specific mipmap level.
- Added 'stencil8', 'depth24stencil8', 'depth32fstencil8', 'depth16', 'depth24', and 'depth32f' PixelFormats for Canvases.
- Added variant of love.graphics.newCanvas which accepts a table of settings.
- Added optional 'readable' boolean field to the table passed into love.graphics.newCanvas.
- Added variant of love.graphics.getCanvasFormats which takes a 'readable' boolean.
- Added optional 'depthstencil' field to the table passed into love.graphics.setCanvas, for using a depth/stencil formatted Canvas when rendering.
- Added optional 'depth' and 'stencil' boolean fields to the table passed into love.graphics.setCanvas, for enabling internal depth and stencil buffers if 'depthstencil' isn't used.
- Added shadow sampler support for Canvases.
- Added love.graphics.setDepthMode for using the depth buffer for depth testing/writes. Depth values of rendered objects can currently only be set via shaders.
- Added love.graphics.setMeshCullMode, for culling back- or front-facing triangles when drawing a Mesh.
- Added love.graphics.setFrontFaceWinding.
- Added variants of love.graphics.clear to control how the active depth and stencil buffers are cleared.
- Added love.graphics.applyTransform and love.graphics.replaceTransform.
- Added love.graphics.transformPoint and love.graphics.inverseTransformPoint.
- Added love.graphics.getStackDepth.
- Added love.graphics.flushBatch for manually flushing automatically batched draws.
- Added SpriteBatch:setDrawRange.
- Added File and FileData variants of love.graphics.newShader.
- Added per-Shader opt in support for the GLSL 3.30 and GLSL ES 3.00 shading languages.
- Added 'void effect()' pixel shader entry point.
- Added love.graphics.validateShader.
- Added Shader:hasUniform (replaces Shader:getExternVariable).
- Added support for non-square Shader uniform matrices on desktop platforms and on mobile GLSL 3.
- Added Shader:send(matrixname, matrixlayout, matrix, ...) which specifies how to interpret the matrix table arguments.
- Added Shader:send variants which accept a Data object.
- Added 'borderellipse' and 'borderrectangle' ParticleSystem distributions.
- Added variant of ParticleSystem:setEmissionArea which accepts an area angle and a flag for whether particle directions are relative to the center of the area.
- Added love.graphics.captureScreenshot (replaces love.graphics.newScreenshot).
- Added 'glsl3', 'instancing', 'fullnpot','pixelshaderhighp', and 'shaderderivatives' GraphicsFeatures.
- Added 'anisotropy' graphics GraphicsLimit.
- Added 'drawcallsbatched' field to love.graphics.getStats.
- Added hardware Mesh instancing support via love.graphics.drawInstanced and a new Mesh:attachAttribute variant.
- Added a Mesh:attachAttribute variant that takes a different target attribute name.
- Added Mesh:detachAttribute.
- Added a variant of Mesh:setVertexMap which accepts a Data object.
- Added the ability to prevent love from creating a stencil buffer for the window in love.conf and love.window.setMode.
- Added love.window.updateMode.
- Added love.window.isMinimized.
- Added love.window.restore.
- Added support for header-less DEFLATE to love.data.compress/decompress.
Renamed APIs
All renamed APIs in 11.0 are deprecated rather than removed, until the next major release.
- Renamed love.window.getPixelScale to love.window.getDPIScale.
- Renamed love.mouse.hasCursor to love.mouse.isCursorSupported.
- Renamed ParticleSystem:setAreaSpread to ParticleSystem:setEmissionArea.
- Renamed love.errhand to love.errorhandler. If love.errhand is defined and love.errorhandler isn't, it will continue to work.
- Renamed Source/SoundData/Decoder:getChannels to Source/SoundData/Decoder:getChannelCount.
- Renamed PrismaticJoint:hasLimitsEnabled and RevoluteJoint:hasLimitsEnabled to PrismaticJoint:areLimitsEnabled and RevoluteJoint:areLimitsEnabled.
- Renamed love.audio.getSourceCount to love.audio.getActiveSourceCount.
- Renamed all get[Object]List functions to get[Object]s.
Other Deprecations
- Deprecated love.filesystem.exists / isFile / isDirectory / isSymlink / getLastModified / getSize (use love.filesystem.getInfo instead).
- Deprecated love.math.compress / decompress (use love.data.compress / decompress instead).
Removals
- Removed the default source type for love.audio.newSource.
- Removed Source:isStopped and Source:isPaused. Use Source:isPlaying instead.
- Removed Source:rewind. Use Source:stop or Source:seek(0) instead.
- Removed Source:resume and love.audio.resume. Use Source:play and love.audio.play instead.
- Removed variant of love.filesystem.newFileData which takes base64 data, use love.data.decode instead.
- Removed the no-argument variant of Text:set, use Text:clear instead.
- Removed Image:getData and Image:refresh, use Image:replacePixels instead.
- Removed love.graphics.getCompressedImageFormats, use love.graphics.getImageFormats instead.
- Removed the 'void effects(...)' pixel shader entry point. Use the new 'void effect()' instead.
- Removed Shader:getExternVariable, use Shader:hasUniform instead.
- Removed love.graphics.newScreenshot, use love.graphics.captureScreenshot instead.
- Removed SpriteBatch:setBufferSize, spritebatches now automatically grow when they run out of space.
- Removed deprecated enet function host:socket_get_address.
- Removed functions deprecated in LÖVE 0.10.2:
- Removed undocumented Shader:sendInt, Shader:sendBoolean, Shader:sentFloat, Shader:sendMatrix, and Shader:sendTexture methods (use Shader:send instead).
- Removed love.window.isCreated (use love.window.isOpen instead).
Other changes
- Windows XP is no longer officially supported.
- Changed all color values to be in the range 0-1, rather than 0-255. This affects the following functions:
- love.graphics.setColor, love.graphics.getColor, love.graphics.setBackgroundColor, and love.graphics.getBackgroundColor.
- SpriteBatch:setColor and SpriteBatch:getColor.
- ParticleSystem:setColors and ParticleSystem:getColors.
- love.graphics.clear.
- love.graphics.newMesh, Mesh:setVertex, and Mesh:getVertex.
- The colored text variants of love.graphics.print, love.graphics.printf, love.graphics.newText, Text:set, Text:setf, Text:add, and Text:addf.
- Shader:sendColor.
- love.graphics.points.
- ImageData:setPixel, ImageData:getPixel, and ImageData:mapPixel.
- love.math.gammaToLinear and love.math.linearToGamma.
- 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.
Fixes
- Fixed an error in the default error handler when the error message contains non UTF-8 bytes.
- Fixed a memory leak when sending love Objects to threads which never load that object's module.
- Fixed a memory leak in enet when peer:send fails.
- Fixed os.execute always returning -1 in Linux.
- Fixed the default reference angle for WeldJoint, PrismaticJoint, and RevoluteJoint.
- Fixed Fixture:getShape to reuse the existing internal Fixture-owned Shape.
- Fixed MouseJoint:setFrequency to error instead of crashing if a frequency of 0 is set.
- Fixed love.system.setClipboardText and love.system.getClipboardText to error instead of crashing, when a window hasn't been created.
- Fixed Joystick:getGamepadMapping to work with xinput controllers.
- Fixed love.joystick.setGamepadMapping's replacement code.
- Fixed baseline calculation when rendering text.
- Fixed Shader:send and Shader:sendColor ignoring the last argument for an array.
- Fixed VaryingTexCoords and love_ScreenSize in shaders to be 'highp' in OpenGL ES, when supported.
- Fixed a crash when love.graphics.pop is called after love.window.setMode while the transformation stack was not empty.
- Fixed ParticleSystem:setParticleLifetime to error if a negative value is given.
- Fixed love.window.isMaximized.
- Fixed Video playback to work with a wider range of Ogg Theora files.
- Fixed Video seeking to be faster.
- Fixed BezierCurves to error instead of hanging in some situations.
- Fixed compilation of luasocket with newer luajit 2.1.0 beta versions.