Difference between revisions of "0.10.0"

(Reorganized some changes)
m (Semantic mediawiki thing)
 
(32 intermediate revisions by 3 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:NoGameScreen_0100.png|thumb|no-game screen]]
  
The codename for LÖVE 0.10.0 is not yet announced. It is currently '''<span style="color:#ff0000;">not released</span>'''.
+
The codename for LÖVE 0.10.0 is '''Super Toast'''. It is currently '''<span style="color:#0000ff;">released</span>'''.
  
== Changes from 0.9.2 ==
+
== Changes from [[0.9.2]] ==
 
=== Additions ===
 
=== Additions ===
 
* Added an iOS port.
 
* Added an iOS port.
 
* Added an Android port.
 
* Added an Android port.
 +
* Added support for reading accelerometer values on mobile devices. Accelerometers are exposed as 3-axis [[Joystick]]s.
 
* Added the flag t.accelerometerjoystick to [[love.conf]]. Disables accelerometer-as-joystick functionality on mobile devices when false.
 
* Added the flag t.accelerometerjoystick to [[love.conf]]. Disables accelerometer-as-joystick functionality on mobile devices when false.
* Added the flag t.gammacorrect to [[love.conf]] (replaces t.window.srgb.) Enabling it globally enables gamma-correct rendering, when supported.
+
* Added the flag t.gammacorrect to [[love.conf]] (replaces t.window.srgb.) Enabling it globally enables [[love.graphics.isGammaCorrect|gamma-correct rendering]], when supported.
 +
* Added video playback support for Ogg Theora videos, via [[love.graphics.newVideo]].
 +
* Added [[love.video]] module. It is not used for displaying videos on-screen (see [[Video]] objects for that.)
 
* Added [[love.touch]] module. Note that it has important differences from the touch implementation in the LÖVE 0.9.2 Android and iOS ports.
 
* Added [[love.touch]] module. Note that it has important differences from the touch implementation in the LÖVE 0.9.2 Android and iOS ports.
 +
** Added [[love.touch.getTouches]]
 
** Added [[love.touch.getPosition]]
 
** Added [[love.touch.getPosition]]
** Added [[love.touch.getTouches]]
+
** Added [[love.touch.getPressure]]
 
* Added [[love.touchpressed]], [[love.touchreleased]], and [[love.touchmoved]].
 
* Added [[love.touchpressed]], [[love.touchreleased]], and [[love.touchmoved]].
 
* Added [[love.system.vibrate]].
 
* Added [[love.system.vibrate]].
 
* Added [[love.filesystem.setRequirePath]] and [[love.filesystem.getRequirePath]].
 
* Added [[love.filesystem.setRequirePath]] and [[love.filesystem.getRequirePath]].
 +
* Added an optional program exit status number argument to [[love.event.quit]].
 
* Added [[love.filedropped]] and [[love.directorydropped]] event callback functions.
 
* Added [[love.filedropped]] and [[love.directorydropped]] event callback functions.
 
* Added [[love.lowmemory]] event callback function, called when the app is running out of memory on mobile operating systems.
 
* Added [[love.lowmemory]] event callback function, called when the app is running out of memory on mobile operating systems.
Line 21: Line 26:
 
* Added [[love.mouse.hasCursor]].
 
* Added [[love.mouse.hasCursor]].
 
* Added a boolean argument to [[love.mousepressed]] and [[love.mousereleased]] indicating whether the button event originated from a touch press.
 
* Added a boolean argument to [[love.mousepressed]] and [[love.mousereleased]] indicating whether the button event originated from a touch press.
 +
* Added [[love.keyboard.isScancodeDown]].
 
* Added optional x/y/width/height arguments to [[love.keyboard.setTextInput]]. They tell the system where text will show up so on-screen keyboards can avoid that area.
 
* Added optional x/y/width/height arguments to [[love.keyboard.setTextInput]]. They tell the system where text will show up so on-screen keyboards can avoid that area.
 
* Added [[Source:getType]] (replaces [[Source:isStatic]].)
 
* Added [[Source:getType]] (replaces [[Source:isStatic]].)
 +
* Added [[Source:getDuration]] and [[Decoder:getDuration]].
 
* Added an optional string argument containing raw pixel data to the width/height variant of [[love.image.newImageData]].
 
* Added an optional string argument containing raw pixel data to the width/height variant of [[love.image.newImageData]].
 
* Added [[love.graphics.ellipse]].
 
* Added [[love.graphics.ellipse]].
 
* Added rounded-rectangle support to [[love.graphics.rectangle]].
 
* Added rounded-rectangle support to [[love.graphics.rectangle]].
* Added an optional boolean argument to [[love.graphics.setBlendMode]] which indicates whether the blend mode should multiply alpha with rgb for the source color. It is true by default.
+
* Added [[love.graphics.points]] (replaces [[love.graphics.point]].)
 +
* Added [[love.graphics.intersectScissor]].
 +
* Added an optional argument to [[love.graphics.setBlendMode]] which indicates whether to treat the colors of drawn objects as having pre-multiplied alpha.
 
* Added a new built-in [[Shader Variables|shader variable]]: "mat3 NormalMatrix".
 
* Added a new built-in [[Shader Variables|shader variable]]: "mat3 NormalMatrix".
 
* Added [[love.graphics.getSupported]] (replaces [[love.graphics.isSupported]].)
 
* Added [[love.graphics.getSupported]] (replaces [[love.graphics.isSupported]].)
 
* Added [[love.graphics.getSystemLimits]] (replaces [[love.graphics.getSystemLimit]].)
 
* Added [[love.graphics.getSystemLimits]] (replaces [[love.graphics.getSystemLimit]].)
* Added [[love.graphics.stencil]] and [[love.graphics.setStencilTest]] (replaces [[love.graphics.setStencil]].)
+
* Added [[love.graphics.stencil]], [[love.graphics.setStencilTest]], and [[love.graphics.getStencilTest]]. (replaces [[love.graphics.setStencil]].)
 
* Added [[love.graphics.isActive]].
 
* Added [[love.graphics.isActive]].
 
* Added color arguments to [[love.graphics.clear]]. It no longer always uses the background color value.
 
* Added color arguments to [[love.graphics.clear]]. It no longer always uses the background color value.
 
* Added [[love.graphics.discard]].
 
* Added [[love.graphics.discard]].
* Added [[love.graphics.isGammaCorrect]]
+
* Added [[love.graphics.isGammaCorrect]].
 +
* Added the "clampzero" [[WrapMode]].
 
* Added the ability to specify custom mipmaps when creating an image, via [[love.graphics.newImage]](filename, {mipmaps={mip1, mip2, ...}}).
 
* Added the ability to specify custom mipmaps when creating an image, via [[love.graphics.newImage]](filename, {mipmaps={mip1, mip2, ...}}).
 
* Added optional x/y/width/height arguments to [[(Image):refresh|Image:refresh]] and [[Canvas:newImageData]].
 
* Added optional x/y/width/height arguments to [[(Image):refresh|Image:refresh]] and [[Canvas:newImageData]].
 
* Added [[(Image):getFlags|Image:getFlags]].
 
* Added [[(Image):getFlags|Image:getFlags]].
 
* Added one- and two-channel [[CanvasFormat|Canvas formats]]: r8, rg8, r16f, rg16f, r32f, and rg32f.
 
* Added one- and two-channel [[CanvasFormat|Canvas formats]]: r8, rg8, r16f, rg16f, r32f, and rg32f.
* Added support for different formats in each Canvas when using multi-canvas rendering. Added the "multicanvasformats" [[GraphicsFeature]] constant.
+
* Added support for different formats in each Canvas when using multi-canvas rendering.
 +
* Added the "multicanvasformats" [[GraphicsFeature]] constant.
 
* Added support for OpenGL ES 2 and 3.
 
* Added support for OpenGL ES 2 and 3.
* Added support for loading ETC1/2, EAC, and PVRTC1 [[CompressedFormat|compressed textures]].
+
* Added support for loading ETC, EAC, PVRTC, and ASTC [[CompressedFormat|compressed textures]] on systems that support them.
 
* Added custom vertex attribute support for [[Mesh]]es via new variants of [[love.graphics.newMesh]].
 
* Added custom vertex attribute support for [[Mesh]]es via new variants of [[love.graphics.newMesh]].
* Added [[Mesh:setVertexAttribute]] and [[Mesh:getVertexAttribute]], [[Mesh:getVertexFormat]], and [[Mesh:flush]].
+
* Added [[Mesh:setVertexAttribute]] and [[Mesh:getVertexAttribute]].
 +
* Added [[Mesh:getVertexFormat]].
 +
* Added an optional 'startvertex' argument to [[Mesh:setVertices]].
 +
* Added the ability for [[love.graphics.newMesh]] and [[Mesh:setVertices]] to accept a [[Data]] object.
 +
* Added [[Mesh:flush]].
 
* Added [[Mesh:setAttributeEnabled]] and [[Mesh:isAttributeEnabled]].
 
* Added [[Mesh:setAttributeEnabled]] and [[Mesh:isAttributeEnabled]].
 
* Added [[Mesh:attachAttribute]].
 
* Added [[Mesh:attachAttribute]].
 +
* Added [[SpriteBatch:attachAttribute]].
 
* Added [[Shader:sendColor]].
 
* Added [[Shader:sendColor]].
 
* Added new shader functions: gammaCorrectColor, gammaToLinear, and linearToGamma. The functions also have 'precise' and 'fast' variants.
 
* Added new shader functions: gammaCorrectColor, gammaToLinear, and linearToGamma. The functions also have 'precise' and 'fast' variants.
 
* Added [[Text]] objects and [[love.graphics.newText]].
 
* Added [[Text]] objects and [[love.graphics.newText]].
 +
* Added per-character color support to [[love.graphics.print]], [[love.graphics.printf]], and [[Text]] objects.
 
* Added BMFont bitmap font file support to [[love.graphics.newFont]] and [[love.font]].
 
* Added BMFont bitmap font file support to [[love.graphics.newFont]] and [[love.font]].
 
* Added kerning support for TrueType/OpenType and BMFont [[Font]]s.
 
* Added kerning support for TrueType/OpenType and BMFont [[Font]]s.
Line 57: Line 74:
 
* Added [[love.window.close]].
 
* Added [[love.window.close]].
 
* Added [[love.window.requestAttention]].
 
* Added [[love.window.requestAttention]].
* Added [[BezierCurve:renderSegment]] and [[BezierCurve:removePoint]].
+
* Added [[love.window.setDisplaySleepEnabled]] and [[love.window.isDisplaySleepEnabled]].
 +
* Added [[BezierCurve:renderSegment]] and [[BezierCurve:removeControlPoint]].
 
* Added [[BezierCurve:getSegment]].
 
* Added [[BezierCurve:getSegment]].
 
* Added [[love.math.compress]] and [[love.math.decompress]].
 
* Added [[love.math.compress]] and [[love.math.decompress]].
Line 70: Line 88:
 
* Changed [[love.graphics.newImage]]'s optional second argument to be a table of flags (flags are "mipmaps" and "linear".)
 
* Changed [[love.graphics.newImage]]'s optional second argument to be a table of flags (flags are "mipmaps" and "linear".)
 
* Changed the arguments for the standard variants of [[love.graphics.newMesh]]. They're now [[love.graphics.newMesh]](vertices [, drawmode, usage]) and [[love.graphics.newMesh]](vertexcount [, drawmode, usage]).
 
* Changed the arguments for the standard variants of [[love.graphics.newMesh]]. They're now [[love.graphics.newMesh]](vertices [, drawmode, usage]) and [[love.graphics.newMesh]](vertexcount [, drawmode, usage]).
* Changed [[ImageData:encode]] to return a [[FileData]] object containing the encoded image. [[ImageData:encode]]'s first parameter is now the format to encode to, and the second parameter is an optional filename to write to.
+
* Changed [[ImageData:encode]] to return a [[FileData]] object. [[ImageData:encode]]'s first parameter is now the format to encode to, and the second parameter is an optional filename to write to.
  
  
Line 84: Line 102:
  
 
=== Removals ===
 
=== Removals ===
* Removed [[love.filesystem.exists]] (use [[love.filesystem.isFile]] or [[love.filesystem.isDirectory]] instead.)
+
* Removed callback variant of [[love.filesystem.getDirectoryItems]].
* Removed callback variant of [[love.filesystem.getDirectoryItems]]
 
 
* Removed the "wu" and "wd" constants for [[love.mousepressed]] (replaced by [[love.wheelmoved]].)
 
* Removed the "wu" and "wd" constants for [[love.mousepressed]] (replaced by [[love.wheelmoved]].)
 
* Removed the named mouse [[MouseConstant|button constants]] (replaced by button numbers.)
 
* Removed the named mouse [[MouseConstant|button constants]] (replaced by button numbers.)
Line 91: Line 108:
 
* Removed image loading support for all (non-compressed texture) file formats except for PNG, JPEG, TGA, and BMP.
 
* Removed image loading support for all (non-compressed texture) file formats except for PNG, JPEG, TGA, and BMP.
 
* Removed JPEG encoding support from [[ImageData:encode]].
 
* Removed JPEG encoding support from [[ImageData:encode]].
 +
* Removed [[love.graphics.point]] (replaced by [[love.graphics.points]].)
 
* Removed [[love.graphics.setPointStyle]] and [[love.graphics.getPointStyle]].
 
* Removed [[love.graphics.setPointStyle]] and [[love.graphics.getPointStyle]].
 
* Removed [[love.graphics.isSupported]] (replaced by [[love.graphics.getSupported]].)
 
* Removed [[love.graphics.isSupported]] (replaced by [[love.graphics.getSupported]].)
Line 96: Line 114:
 
* Removed [[love.graphics.setStencil]] (replaced by [[love.graphics.stencil]] and [[love.graphics.setStencilTest]].)
 
* Removed [[love.graphics.setStencil]] (replaced by [[love.graphics.stencil]] and [[love.graphics.setStencilTest]].)
 
* Removed the "canvas", "shader", "npot", "subtractive", and "mipmap" [[GraphicsFeature]] constants (the features always have guaranteed support now.)
 
* Removed the "canvas", "shader", "npot", "subtractive", and "mipmap" [[GraphicsFeature]] constants (the features always have guaranteed support now.)
 +
* Removed the "multicanvas" [[GraphicsFeature]] constant (use [[love.graphics.getSystemLimits]] instead.)
 
* Removed the "srgb" [[GraphicsFeature]] constant (use [[love.graphics.isGammaCorrect]] or [[love.graphics.getCanvasFormats]]().srgb instead.)
 
* Removed the "srgb" [[GraphicsFeature]] constant (use [[love.graphics.isGammaCorrect]] or [[love.graphics.getCanvasFormats]]().srgb instead.)
 
* Removed the "srgb" flag in [[love.window.setMode]] and in the t.window table in [[love.conf]] (Replaced by t.gammacorrect.)
 
* Removed the "srgb" flag in [[love.window.setMode]] and in the t.window table in [[love.conf]] (Replaced by t.gammacorrect.)
* Removed the "premultiplied" [[BlendMode]] ([[love.graphics.setBlendMode]]("alpha", false) now does the same thing.)
+
* Removed the "premultiplied" [[BlendMode]] ([[love.graphics.setBlendMode]]("alpha", "premultiplied") now does the same thing.)
 
* Removed [[Canvas:getPixel]] (use [[Canvas:newImageData]] instead.)
 
* Removed [[Canvas:getPixel]] (use [[Canvas:newImageData]] instead.)
 
* Removed [[Canvas:clear]] (use [[love.graphics.clear]] instead.)
 
* Removed [[Canvas:clear]] (use [[love.graphics.clear]] instead.)
 
* Removed [[Mesh:getVertices]].
 
* Removed [[Mesh:getVertices]].
 
* Removed [[Mesh:setVertexColors]] and [[Mesh:hasVertexColors]] (use [[Mesh:setAttributeEnabled]]("VertexColor", enable) instead.)
 
* Removed [[Mesh:setVertexColors]] and [[Mesh:hasVertexColors]] (use [[Mesh:setAttributeEnabled]]("VertexColor", enable) instead.)
* Removed functions deprecated in LOVE 0.9.x:
+
* Removed functions deprecated in LOVE [[0.9.1]] and [[0.9.2]]:
 
** Removed [[love.graphics.getMaxImageSize]] and [[love.graphics.getMaxPointSize]] (replaced by [[love.graphics.getSystemLimits]].)
 
** Removed [[love.graphics.getMaxImageSize]] and [[love.graphics.getMaxPointSize]] (replaced by [[love.graphics.getSystemLimits]].)
 
** Removed [[Mesh:setImage]], [[Mesh:getImage]], [[SpriteBatch:setImage]], [[SpriteBatch:getImage]], [[ParticleSystem:setImage]], and [[ParticleSystem:getImage]] (replaced by set/getTexture.)
 
** Removed [[Mesh:setImage]], [[Mesh:getImage]], [[SpriteBatch:setImage]], [[SpriteBatch:getImage]], [[ParticleSystem:setImage]], and [[ParticleSystem:getImage]] (replaced by set/getTexture.)
Line 110: Line 129:
 
** Removed the "dxt" and "bc5" [[GraphicsFeature]] constants (replaced by [[love.graphics.getCompressedImageFormats]].)
 
** Removed the "dxt" and "bc5" [[GraphicsFeature]] constants (replaced by [[love.graphics.getCompressedImageFormats]].)
 
** Removed the "hdrcanvas" [[GraphicsFeature]] constant (replaced by [[love.graphics.getCanvasFormats]].)
 
** Removed the "hdrcanvas" [[GraphicsFeature]] constant (replaced by [[love.graphics.getCanvasFormats]].)
** Removed [[love.window.getWidth]] and [[love.window.getHeight]] (use [[love.graphics.getWidth]] and [[love.graphics.getHeight]] or [[love.window.getMode]] instead.)
+
** Removed [[love.window.getWidth]], [[love.window.getHeight]] and [[love.window.getDimensions]] (use [[love.graphics.getWidth]], [[love.graphics.getHeight]], [[love.graphics.getDimensions]] or [[love.window.getMode]] instead.)
  
  
Line 116: Line 135:
 
* Fixed [[utf8|utf8.char]].
 
* Fixed [[utf8|utf8.char]].
 
* Fixed detection of fused executables.
 
* Fixed detection of fused executables.
 +
* Fixed crashes when objects which store Lua callback functions are garbage collected after being used in coroutines.
 
* Fixed [[World:getCallbacks]] and [[World:getContactFilter]] when used in coroutines.
 
* Fixed [[World:getCallbacks]] and [[World:getContactFilter]] when used in coroutines.
* Fixed crashes when objects which store Lua callback functions are garbage collected after being used in coroutines.
+
* Fixed memory leaks in [[love.physics]] if [[World:destroy]] is never called. When a [[World]] is garbage collected it now destroys all associated [[Body|bodies]], [[Fixture|fixtures]], and [[Joint|joints]].
 
* Fixed [[love.keyboard.getKeyFromScancode]] crashing when an invalid scancode is given.
 
* Fixed [[love.keyboard.getKeyFromScancode]] crashing when an invalid scancode is given.
 
* Fixed decoding of 8-bit WAV files.
 
* Fixed decoding of 8-bit WAV files.
 +
* Fixed a crash issue when rewinding streaming ogg Sources, when certain versions of libvorbis are used.
 
* Fixed [[love.audio.stop]]() not rewinding streaming Sources.
 
* Fixed [[love.audio.stop]]() not rewinding streaming Sources.
 
* Fixed the stencil buffer in [[Canvas]]es when an unsupported MSAA value is used to create the Canvas.
 
* Fixed the stencil buffer in [[Canvas]]es when an unsupported MSAA value is used to create the Canvas.
 
* Fixed [[Canvas:renderTo]] to restore the previous canvases if an error occurs in the passed function.
 
* Fixed [[Canvas:renderTo]] to restore the previous canvases if an error occurs in the passed function.
 
* Fixed love.graphics.draw(canvas) to cause a Lua error if that canvas is the active one.
 
* Fixed love.graphics.draw(canvas) to cause a Lua error if that canvas is the active one.
 +
* Fixed [[Mesh:getVertexMap]] to return nil, rather than an empty table, if no vertex map has been set.
 
* Fixed [[love.graphics.getColorMask]].
 
* Fixed [[love.graphics.getColorMask]].
 
* Fixed the default offset for particles when [[ParticleSystem:setQuads]] or [[ParticleSystem:setTexture]] is used.
 
* Fixed the default offset for particles when [[ParticleSystem:setQuads]] or [[ParticleSystem:setTexture]] is used.
Line 133: Line 155:
 
* Improved the performance of [[World:rayCast]] and [[World:queryBoundingBox]].
 
* Improved the performance of [[World:rayCast]] and [[World:queryBoundingBox]].
 
* Improved the performance of [[love.graphics.line]] and other line drawing functions, when the "smooth" [[LineStyle]] is used.
 
* Improved the performance of [[love.graphics.line]] and other line drawing functions, when the "smooth" [[LineStyle]] is used.
 +
* Improved the performance of [[Shader:send]] when matrices are used.
 
* Improved the performance of [[ImageData]] and [[SoundData]] methods when LuaJIT's JIT compiler is enabled, by using efficient FFI code.
 
* Improved the performance of [[ImageData]] and [[SoundData]] methods when LuaJIT's JIT compiler is enabled, by using efficient FFI code.
 +
* Improved the performance of [[love.math.noise]], [[love.math.gammaToLinear]], [[love.math.linearToGamma]], [[love.math.random]], and [[RandomGenerator:random]] when LuaJIT's JIT compiler is enabled.
  
  
Line 142: Line 166:
 
* Updated [[World:setCallbacks]], [[World:setContactFilter]], [[World:queryBoundingBox]], and [[World:rayCast]] to have improved argument type checking.
 
* Updated [[World:setCallbacks]], [[World:setContactFilter]], [[World:queryBoundingBox]], and [[World:rayCast]] to have improved argument type checking.
 
* Updated threads to load [[love.filesystem]] automatically.
 
* Updated threads to load [[love.filesystem]] automatically.
 +
* Updated [[love.filesystem]] to enable [[love.filesystem.setSymlinksEnabled|symlinks]] by default.
 
* Updated [[love.math.setRandomSeed]] and [[RandomGenerator:setSeed]] to produce better results for the first few random() calls.
 
* Updated [[love.math.setRandomSeed]] and [[RandomGenerator:setSeed]] to produce better results for the first few random() calls.
 +
* Updated [[love.math.random]] and [[RandomGenerator:random]] to produce slightly better results in general.
 
* Updated [[Source]] methods that deal with spatial audio to error rather than failing silently if the Source isn't mono.
 
* Updated [[Source]] methods that deal with spatial audio to error rather than failing silently if the Source isn't mono.
 
* Updated the 3D and 4D variants of [[love.math.noise]] to use Perlin noise rather than Simplex noise, to avoid patent issues.
 
* Updated the 3D and 4D variants of [[love.math.noise]] to use Perlin noise rather than Simplex noise, to avoid patent issues.
 
* Updated [[love.graphics.newImageFont]] to no longer treat separator pixels as spacing.
 
* Updated [[love.graphics.newImageFont]] to no longer treat separator pixels as spacing.
 
* Updated the default font to use less memory.
 
* Updated the default font to use less memory.
 +
* Updated the behavior of text wrapping with [[love.graphics.printf]] and [[Font:getWrap]] to work better.
 +
* Updated [[love.graphics.print]] and [[love.graphics.printf]] to no longer automatically round the x and y position arguments.
 +
* Updated some of the error messages for [[love.graphics.newImage]] to be more descriptive.
 
* Updated love.graphics color functions to automatically apply [[love.math.gammaToLinear]] to color values when gamma-correct rendering is enabled.
 
* Updated love.graphics color functions to automatically apply [[love.math.gammaToLinear]] to color values when gamma-correct rendering is enabled.
 
* Updated the "normal" [[CanvasFormat]] to internally use "srgb" rather than "rgba8" when gamma-correct rendering is enabled.
 
* Updated the "normal" [[CanvasFormat]] to internally use "srgb" rather than "rgba8" when gamma-correct rendering is enabled.
Line 157: Line 186:
  
 
[[Category:Versions]]
 
[[Category:Versions]]
 +
{{#set:InternalVersion=100}}
 +
{{#set:Codename=Super Toast}}
 +
{{#set:Status=<span style="color:#0000ff;">Released</span>}}
 +
{{#set:ReleaseDate=2015-12-22}}

Latest revision as of 02:07, 20 December 2018

no-game screen

The codename for LÖVE 0.10.0 is Super Toast. It is currently released.

Changes from 0.9.2

Additions


Changed APIs


Renamed APIs


Removals


Bugfixes


Performance improvements


Other changes