Difference between revisions of "11.0"

m
m (Semantic mediawiki thing)
(42 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{notice|The information on this page may not be accurate or up to date due to the information pertaining to a version that is currently in development.}}
+
[[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 0.11.0 is not yet announced. It is currently '''<span style="color:#ff0000;">not released</span>'''.
+
  
 
== Changes from [[0.10.2]] ==
 
== Changes from [[0.10.2]] ==
  
 
=== Additions ===
 
=== Additions ===
 +
* Added formal deprecation warnings, on by default for non-fused games.
 +
* Added [[love.setDeprecationOutput]] and [[love.hasDeprecationOutput]].
 
* Added [[Object:release]].
 
* Added [[Object:release]].
 
* Added [[Data:clone]].
 
* Added [[Data:clone]].
* Added [[love.audio.newQueueableSource|queuable audio Sources]].
+
* Added [[love.audio.newQueueableSource|queueable audio Sources]].
 
* Added [[RecordingDevice|microphone recording]] support.
 
* Added [[RecordingDevice|microphone recording]] support.
* Added low gain, high gain, and band pass [[Filter]]s to love.audio [[Source]]s.
+
* Added low pass, high pass, and band pass [[Source:setFilter|filters]] to love.audio [[Source]]s.
* Added audio [[Effect]] APIs (reverb, echo, etc.)
+
* 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 [[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 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 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.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 [[love.math.encode]] and [[love.math.decode]], which support hex and base64.
+
* Added [[Channel:hasRead]], which checks if a message has been read. Takes an id, which [[Channel:push]] will now return.
* Added [[love.math.hash]], which supports MD5, SHA-1 and the SHA-2 family.
+
* 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 [[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 24: Line 35:
 
* Added the ability to specify a per-object pixel density scale factor when creating [[Image]]s, [[Canvas]]es, [[Font]]s, and [[Video]]s. Affects drawing.
 
* Added the ability to specify a per-object pixel density scale factor when creating [[Image]]s, [[Canvas]]es, [[Font]]s, and [[Video]]s. Affects drawing.
 
* 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:getPixelDensity]], [[love.graphics.getPixelDensity]], and [[Font:getPixelDensity]].
+
* Added [[Texture:getDPIScale]], [[love.graphics.getDPIScale]], and [[Font:getDPIScale]].
* Added Array, Cubemap, and Volume [[TextureType]]s, corresponding [[Texture]] APIs, and variants to [[love.graphics.newImage]] and [[love.graphics.newCanvas]] for creating different texture types.
+
* 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]]).
Line 32: Line 45:
 
* 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 37: Line 51:
 
* 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 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 [[Texture:setDepthSampleMode|shadow sampler]] support for [[Canvas]]es.
 
* Added [[Texture:setDepthSampleMode|shadow sampler]] support for [[Canvas]]es.
 +
* 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 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 [[love.graphics.flushBatch]] for manually flushing automatically batched draws.
 
* Added [[SpriteBatch:setDrawRange]].
 
* 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 per-[[Shader]] opt in support for the GLSL 3.30 and GLSL ES 3.00 shading languages.
 
* Added 'void effect()' [[love.graphics.newShader|pixel shader entry point]].
 
* Added 'void effect()' [[love.graphics.newShader|pixel shader entry point]].
Line 45: 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, is_column_major, matrix, ...) which specifies how to interpret the matrix table arguments.
+
* 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 'borderellipse' and 'borderrectangle' [[ParticleSystem]] distributions.
* Added [[ParticleSystem:setAreaSpreadAngle]], [[ParticleSystem:getAreaSpreadAngle]], [[ParticleSystem:setAreaSpreadIsRelativeDirection]], and [[ParticleSystem: setAreaSpreadIsRelativeDirection]].
+
* 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.
 
* Added 'anisotropy' graphics [[GraphicsLimit]].
 
* 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 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 a [[Mesh:attachAttribute]] variant that takes a different target attribute name.
Line 57: Line 80:
 
* Added the ability to prevent love from creating a stencil buffer for the window in [[love.conf]] and [[love.window.setMode]].
 
* 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.updateMode]].
 +
* Added [[love.window.isMinimized]].
 +
* Added [[love.window.restore]].
 +
* Added support for header-less DEFLATE to [[love.data.compress]]/[[love.data.decompress|decompress]].
  
  
 
=== Renamed APIs ===
 
=== Renamed APIs ===
* Renamed [[love.window.getPixelScale]] to [[love.window.getPixelDensity]].
+
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: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 [[love.audio.getSourceCount]] to [[love.audio.getActiveSourceCount]].
 +
* Renamed all get[Object]List functions to get[Object]s.
 +
 
 +
 
 +
=== 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.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 variant of [[ove.filesystem.newFileData]] which takes base64 data, use [[love.math.decode]] instead.
+
* 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 the no-argument variant of [[Text:set]], use [[Text:clear]] instead.
 
* Removed the no-argument variant of [[Text:set]], use [[Text:clear]] instead.
* Removed [[(Image):getData|Image:getData]] and [[(Image):refresh]], use [[(Image):replacePixels|Image:replacePixels]] instead.
+
* Removed [[(Image):getData|Image:getData]] and [[(Image):refresh|Image:refresh]], use [[(Image):replacePixels|Image:replacePixels]] instead.
 
* Removed [[love.graphics.getCompressedImageFormats]], use [[love.graphics.getImageFormats]] instead.
 
* Removed [[love.graphics.getCompressedImageFormats]], use [[love.graphics.getImageFormats]] instead.
 
* Removed the 'void effects(...)' [[love.graphics.newShader|pixel shader entry point]]. Use the new 'void effect()' instead.
 
* Removed the 'void effects(...)' [[love.graphics.newShader|pixel shader entry point]]. Use the new 'void effect()' instead.
 
* 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 deprecated [[enet]] function [[host:socket_get_address]].
+
* 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 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).
 
 
=== 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.
 
  
  
 
=== 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 94: Line 133:
 
** [[love.graphics.points]].
 
** [[love.graphics.points]].
 
** [[ImageData:setPixel]], [[ImageData:getPixel]], and [[ImageData:mapPixel]].
 
** [[ImageData:setPixel]], [[ImageData:getPixel]], and [[ImageData:mapPixel]].
* Changed high-dpi functionality to require much less code (often none at all) for things to appear at the correct sizes and positions.
+
** [[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 [[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 the [[love.audio]] playback APIs drastically.
+
* 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 [[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.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 [[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 [[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 [[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 [[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 [[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 [[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 [[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 [[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.
  
  
 
=== Fixes ===
 
=== Fixes ===
 +
* 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]].
 +
* 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 [[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 [[Joystick:getGamepadMapping]] to work with xinput controllers.
 +
* Fixed [[love.joystick.setGamepadMapping]]'s replacement code.
 
* Fixed baseline calculation when rendering text.
 
* Fixed baseline calculation when rendering text.
 +
* Fixed [[Shader:send]] and [[Shader:sendColor]] ignoring the last argument for an array.
 
* Fixed [[Shader Variables|VaryingTexCoords]] and [[Shader Variables|love_ScreenSize]] in shaders to be 'highp' in OpenGL ES, when supported.
 
* Fixed [[Shader Variables|VaryingTexCoords]] and [[Shader Variables|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 [[BezierCurve]]s to error instead of hanging in some situations.
 +
* 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}}

Revision as of 04:35, 16 December 2018

no-game screen

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

Changes from 0.10.2

Additions


Renamed APIs

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


Other Deprecations


Removals


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.


Fixes