diff --git a/doc/_archive/release_notes.rst b/CHANGELOG_HISTORY.rst similarity index 86% rename from doc/_archive/release_notes.rst rename to CHANGELOG_HISTORY.rst index 56ddcf643..6386ab819 100644 --- a/doc/_archive/release_notes.rst +++ b/CHANGELOG_HISTORY.rst @@ -1,267 +1,18 @@ -.. _release_notes: -Release Notes -============= +Release Note History +==================== -Keep up-to-date with the latest changes to the Arcade library by the release notes. +Change log from order arcade versions. -Version 3.0.0 -------------- - -*Unreleased* - -You can grab pre-release versions from PyPi. See the available versions from the -`Arcade PyPi Release History `_. - -Version 3.0.0 is a major update to Arcade. It is not 100% compatible with the 2.6 API. - -Breaking Changes -~~~~~~~~~~~~~~~~ - -These are the API changes which could require updates to existing code based on -the 2.6 API. Some of these things may be repeated in the "Updates" section of -these release notes, however we have compiled the breaking changes here for an -easy reference. There may be other behavior changes that could break specific -scenarios, but this section is limited to changes which directly changed the -API in a way that is not compatible with how it was used in 2.6. - -* :py:meth:`arcade.Sprite.angle` has changed to clockwise. So everything rotates different now. -* Signature for Sprite creation has changed. -* The deprecated ``update()`` function has been removed from the - :py:class:`~arcade.Window`, :py:class:`~arcade.View`, - :py:class:`~arcade.Section`, and :py:class:`~arcade.SectionManager` classes. - Instead, please use the :py:meth:`~arcade.Window.on_update()` function. - It works the same as the ``update`` function, but has a ``delta_time`` - parameter which holds the time in seconds since the last update. -* The ``update_rate`` parameter of :py:class:`~arcade.Window` can no longer be set to ``None``. Previously it defaulted - to ``1 / 60`` however could be set to ``None``. The default is still the same, but setting it to None will not do anything. -* Sprites created from the :py:class:`~arcade.tilemap.TileMap` class would previously set a key in the ``Sprite.properties`` dictionary - named ``type``. This key has been renamed to ``class``. This is in keeping with Tiled's renaming of the key and following the Tiled - format/API as closely as possible. -* The ``arcade.text_pillow`` and ``arcade.text_pyglet`` modules have been completely removed. The Pillow implementation is gone, and the - Pyglet one has been renamed to just ``arcade.text``. These modules were largely internal, but it is possible to have referenced them directly. -* Due to the above change and removal of the Pillow text implementation, the :py:func:`~arcade.create_text_sprite` previously referred to - the Pillow text implementation, and there was no easy way to create a sprite from Text with the pyglet implementation. This function has - been re-worked to use the pyglet based text system. It has no API breaking changes, but the underlying functionality has changed a lot, so - if you are using this function it may be worth checking the docs for it again. The main concern for a difference here would be if you - are also using any custom :py:class:`~arcade.TextureAtlas`. -* The GUI package has been changed significantly. -* Buffered shapes (shape list items) have been moved to their own sub-module. -* `use_spatial_hash` parameter for `SpriteList` and `TileMap` is now a `bool` instead of `Optional[bool]` -* :py:meth:`~arcade.draw_text()` and :py:class:`~arcade.text.Text` arguments have changed. The `start_x` and `start_y` parameters have been - removed. The `x` and `y` parameters are now required. `align!=left` does not interfere with `multiline` parameter anymore. -* GUI - - * Removed :py:class:`~arcade.gui.widgets.UIWrapper` this is now general available in :py:class:`~arcade.gui.widgets.UILayout` - * Removed :py:class:`~arcade.gui.widgets.UIBorder` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget` - * Removed :py:class:`~arcade.gui.widgets.UIPadding` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget` - * Removed :py:class:`~arcade.gui.widgets.UITexturePane` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget` - * Removed :py:class:`~arcade.gui.widgets.UIAnchorWidget` replaced by :py:class:`~arcade.gui.widgets.UIAnchorLayout` - - -Featured Updates -~~~~~~~~~~~~~~~~ - -* Arcade now supports mixing Pyglet and Arcade drawing. This means - you can, for example, use Pyglet batches. Pyglet batches can draw thousands - of Pyglet objects with the cost and performance time of only a few. -* The code behind the texture atlas Arcade creates for each SpriteList has - been reworked to be faster and more efficient. Reversed/flipped sprites are - no longer duplicated. -* Added a new system for handling background textures (ADD MORE INFO) -* Arcade now supports OpenGL ES 3.1/3.2 and have been - tested on the Raspberry Pi 4. Any model using the Cortex-A72 - CPU should work. Note that you need fairly new Mesa drivers - to get the new V3D drivers. - -Changes -~~~~~~~ - -* :py:class:`~arcade.Window` - - * Removal of the ``update`` function in favor of :py:meth:`~arcade.Window.on_update()` - * ``update_rate`` parameter in the constructor can no longer be set to ``None``. Must be a float. - * Added ``draw_rate`` parameter to constructor - :py:meth:`~arcade.Window.__init__`, this will control the interval that the - :py:meth:`~arcade.Window.on_draw()` function is called at. This can be used - with the pre-existing ``update_rate`` parameter which controls - :py:meth:`~arcade.Window.on_update()` to achieve separate draw and update rates. - -* :py:class:`~arcade.View` - - * Removal of the ``update`` function in favor of :py:meth:`~arcade.View.on_update()` - -* :py:class:`~arcade.Section` and :py:class:`~arcade.SectionManager` - - * Removal of the ``update`` function in favor of :py:meth:`arcade.Section.on_update()` - -* GUI - - * :py:class:`~arcade.gui.widgets.UIWidget` - - * Supports padding, border and background (color and texture) - * Visibility: visible=False will prevent rendering of the widget. It will also not receive any UI events - * Dropped :py:meth:`~arcade.gui.widget.UIWidget.with_space_around()` - * ``UIWidget.with_`` methods do not wrap the widget anymore, they only change the attributes - * Fixed an blending issue when rendering the gui surface to the screen - * Support nine patch information to draw background texture - * Performance improvements - * Removed some attributes from public interface, use ``UIWidget.with_`` methods - * ``UIWidget.border_width`` - * ``UIWidget.border_color`` - * ``UIWidget.bg_color`` - * ``UIWidget.bg_texture`` - * ``UIWidget.padding_top`` - * ``UIWidget.padding_right`` - * ``UIWidget.padding_bottom`` - * ``UIWidget.padding_left`` - * Update and add example code. - * Iterable (providing direct children) - - * New widgets: - - * :py:class:`~arcade.gui.widgets.dropdown.UIDropdown` - * :py:class:`~arcade.gui.widgets.image.UIImage` - * :py:class:`~arcade.gui.widgets.slider.UISlider` - * :py:class:`~arcade.gui.widgets.constructs.UIButtonRow` (`PR1580 `_ and `PR1253 `_) - - * :py:class:`~arcade.gui.UIInteractiveWidget` only reacts to left mouse button events - - * Arcade :py:class:`~arcade.gui.property.Property`: - - * Properties are observable attributes (supported: primitive, list and dict). - Listener can be bound with :py:meth:`~arcade.gui.property.bind` - - * All :py:class:`~arcade.gui.UILayout`s support ``size_hint``, ``size_hint_min``, ``size_hint_max``. - - * :py:class:`~arcade.gui.UIBoxLayout` - * :py:class:`~arcade.gui.UIAnchorLayout` - * :py:class:`~arcade.gui.UIGridLayout` (`PR1478 `_) - - * Replaces deprecated usage of :py:func:`~arcade.draw_text` - - * Misc Changes - - * :py:meth:`arcade.color_from_hex_string` changed to follow the CSS hex string standard - * Windows Text glyph are now created with DirectWrite instead of GDI - * Removal of various deprecated functions and parameters - * OpenGL examples moved to - `examples/gl `_ - from ``experiments/examples`` - -* Sprites - - * The method signature for :py:meth:`arcade.Sprite.__init__` has been changed. (May break old code.) - * The sprite code has been cleaned up and broken into parts. - * :py:meth:`arcade.Sprite.angle` now rotates clockwise. Why it ever rotated - the other way, and why it lasted so long, we do not know. - -* Controller Input - - * Previously controllers were usable via the ``arcade.joysticks`` module. This - module is still available in 3.0. - However, it should largely be seen as deprecated for most people who want - basic controller support. This module existed basically just as an alias to - the Pyglet joysticks module. We now have a new ``arcade.controller`` module, - which is similarly just an alias to Pyglet's newer - Controller API. This change should make a much wider selection of controllers - able to work with Arcade, and provide newer functionality and be - easier to use for most cases than the joystick module. The joystick module - may still be useful if you need specialty controllers such as racing - wheels or flight sticks. All existing example code has been updated to use - the new controller API. - -* Text - - * Complete removal of the old PIL based text system. In Arcade 2.6 we had largely switched to the newer Pyglet based system, however - there were still remnants of the PIL implementation around. Namely the :py:func:`~arcade.create_text_sprite` function which has been - updated to use the Pyglet system. There's no API breaking change here but if you are using the function it would be worth reading the - new docs for it, as there are some different considerations surrounding use of a custom :py:class:`~arcade.TextureAtlas` if you are also - doing that. This function should now be much much faster than the old PIL implementation. The texture generation happens almost entirely on - the GPU now. - * As part of this move, the ``arcade.text_pillow`` module has been removed completely, and the ``arcade.text_pyglet`` module has been re-named - just be ``arcade.text``. - * :py:func:`~arcade.draw_text` and :py:class:`~arcade.Text` both now accept a ``start_z`` parameter. This will allow advanced usage to set the Z - position of the underlying Label. This parameter defaults to 0 and does not change any existing usage. - -* :py:mod:`arcade.draw_commands`: - - * Added :py:func:`arcade.draw_commands.draw_lbwh_rectangle_textured` - - * Replaces the now-deprecated :py:func:`arcade.draw_commands.draw_lrwh_rectangle_textured` - * Usage is exactly the same - -* OpenGL - - * Support for OpenGL ES 3.1 and 3.2. 3.2 is fully supported, 3.1 is only supported if the ``EXT_geometry_shader`` extension - is provided by the driver. This is part of the minimum spec in 3.2 so it is guaranteed to be there. This is the only optional - extension that Arcade needs to function with 3.1. - - As an example, the Raspberry Pi 4b only supports OpenGL ES 3.1, however does provide this extension, so is fully compatible - with Arcade. - * Textures now support immutable storage for OpenGL ES compatability. - * Arcade is now using Pyglet's projection and view matrix. - All functions setting matrices will update the Pyglet window's - ``view`` and ``projection`` attributes. Arcade shaders is also using Pyglet's ``WindowBlock`` UBO. - * Uniforms are now set using ``glProgramUniform`` instead of ``glUniform`` - when the extension is available. - * Fixed many implicit type conversions in the shader code for wider support. - * Added ``front_face`` property on the context for configuring front face winding order of triangles - * Added ``cull_face`` property on the context for configuring what triangle face to cull - * Added support for bindless textures - * Added support for 64 bit integer uniforms - * Added support for 64 float uniforms - -* :py:class:`~arcade.tilemap.TileMap` - - * Added support Tiles defined as a sub-rectangle of an image. See - `Tiled 1.9 Release Notes `_ for more information on - this feature. - * Changed the ``Sprite.properties`` key "type" to "class" to stay in line with Tiled's re-naming of this key in their - API. - * You can now define a custom texture atlas for SpriteLists created in a TileMap. You can provide a map default to - the ``texture_atlas`` parameter of the :py:class:`~arcade.tilemap.Tilemap` class or the - :py:func:`~arcade.tilemap.load_tilemap` function. This will be used by default on all - layers, however it can be overridden on a per-layer basis as defined by the new ``texture_atlas`` key in the - ``layer_options`` dictionary. - If no custom atlas is provided, then the global default atlas will be used (This is how it works pre-Arcade 3.0). - * Fix for animated tiles from sprite sheets - * DefaultTextureAtlas: Added ``sync_texture_image`` method to sync the texture in the atlas back into - the internal pillow image in the ``arcade.Texture``. - * DefaultTextureAtlas: Added ``get_texture_image`` method to get pixel data of a texture in the atlas as a pillow image. - -* Collision Detection - - * Collision detection is now even faster. - * Remove Shapely for collision detection as 3.11 is faster without it. - -* Shape list - - * Add in :py:func:`arcade.create_triangles_strip_filled_with_colors` - * Moved all buffered items that can be added to a shape list to `arcade.shape_list` - -* Documentation +Version 2.6.17 +-------------- - * :ref:`example-code` code page has been reorganized - * `CONTRIBUTING.md `_ page has been updated - * Improve :ref:`background_parallax` example +*Released 2022-Dec-30* -Special thanks to -`Einar Forselv `_ -`Darren Eberly `_, -`pushfoo `_, -`Maic Siemering `_, -`Cleptomania `_, -`Aspect1103 `_, -`Alejandro Casanovas `_, -`Ibrahim `_, -`Andrew `_, -`Alexander `_, -`kosvitko `_, -and -`pvcraven `_ -for their contributions to this release. Also, thanks to everyone on the -`Pyglet`_ team! We depend heavily on Pyglet's continued development. +* Bump Pillow to 9.3.0 +* Bump PyMunk to 6.4.0 +* Add explicit compatibility tag for 3.11 +* Drop 3.7 as part of the test suite Version 2.6.16 --------------