更改日志

皮蒙克7.0.0(2025-05-28)

Many improvements and breaking changes!

这是一个大型清理版本,有几个突破性的变化。如果您从旧版本升级,请务必注意,尤其是 Space.bodies , Space.shapesSpace.constraints 更新可以悄无声息地中断!

特别感谢Github用户aatle对Pymunk版本提出的许多建议和反馈!

最大的变化与碰撞处理程序有关:

  • begin , pre_stepseparate 现在将始终调用方法。 post_solve 只有当冲突实际得到处理时,才会继续调用。

  • 您不再返回 boolbeginpre_step 以控制是否应该处理碰撞。相反,有一处房产 Arbiter , process_collision ,可以设置为 False .

  • process_collision 属性稳定但可更新,例如如果设置为 Falsebegin 它会是回调 Falsepre_step ,这反过来又可以将其切换回 True .

  • CollisionHandler 班级本身不再是公开的。的 Space 有了新 on_collision() 方法,该方法将回调作为参数,但不返回任何内容。

除了上面(这很容易发现)之外,还有一个更微妙的变化:

  • Space.shapes , Space.bodiesSpace.constraints 现在返回a KeysView .这意味着返回的集合不再是一个副本,相反,如果您持有它的引用,并且如果您(例如)将对象添加到 Space 它会更新。要获得旧行为,您可以手动转换为列表,例如 list(Space.shapes) .

其他突破性变化:

  • 统一所有 Space.query 包括传感器形状的方法。以前,最接近的方法会过滤掉它们。

  • 连接到约束/关节的两个实体中至少有一个必须是动态的。

  • Vec2d 现在支持 bool 测试是否为零。( bool(Vec2d(2,3) == True ).

  • 添加 Vec2d.length_squared ,并被废弃 Vec2d.get_length_sqrd()

  • 添加 Vec2d.get_distance_squared() ,并被废弃 Vec2d.get_dist_sqrd()

  • 动态物体在呼叫时必须具有非零质量 Space.step() (从 Body.mass ,或通过设置 massdensity 在连接到 Body ).设置无效 mass0 在连接到 Space .

  • 弃用 matplotlib_util .如果您认为这是一个有用的模块并且正在使用它,请在https://github.com/viblo/pymunk/issues的Pymunk问题跟踪器上创建一个问题

  • 放弃对Python 3.8的支持

  • 改变 Body.constraints 返回一个 KeysView 附加到的约束 Body .请注意,它对约束的引用仍然很弱。

  • 扭转了身体和形状之间的依赖性。现在 Body 拥有连接,而 Shape 只保持弱裁判 Body .这意味着,如果你删除一个 Body ,那么任何其他地方未引用的形状也将被删除。

  • 改变 Body.shapes 返回一个 KeysView 而不是一组形状。

  • 改变 Shape.segment_query 如果查询没有命中形状,则返回无。

  • 改变 ContactPointSet.points 是一个 tuple 而不是 list 为了明确它的长度是固定的。

  • 添加默认值 empty_callback ,可用于有效地将任何回调重置为默认。

新的非突破性功能:

  • 从使用Chipmunk切换到Chipmunk的新Munk 2D分支(详情请参阅https://github.com/viblo/Munk2D)。

  • 添加 Arbiter.bodies 将形状的身体放在 Arbiter .

  • 新方法 ShapeFilter.rejects_collision() 检查过滤器是否会拒绝与另一个过滤器的冲突。

  • 新方法 Vec2d.polar_tuple 返回作为极坐标的载体

  • 更改类型 PointQueryInfo.shape , SegmentQueryInfo.shapeShapeQueryInfo.shape 不被 Optional ,它们总是有一个形状。

  • 构建和发布适用于Linux ARM和Pypy 3.11的轮子

其他改进:

  • 优化 Vec2d.angleVec2d.angle_degrees .请注意,优化版本处理 0 长度载体 x 和/或 y 等于 -0 略有不同

  • 修复了访问问题 Body.spacespace 已删除并GCed。

  • 许多地方的文档改进 (Vec2d , Poly , Shape 及更多)

  • 改进的断言 body.mass 健全性检查 (0 < mass < math.inf )用于添加到空间中的动态物体。

  • 改进的断言 body.moment 健全性检查 (0 < moment )用于添加到空间中的动态物体。

  • 代码的内部清理

皮蒙克6.11.1(2025-02-09)

Python 3.13 GC issue fix

这是对Pymunk的补丁更新,可删除调试日志记录。这应该是Python 3.13上的GC的问题。

更改:

  • 删除调试日志记录

皮蒙克6.11.0(2025-01-18)

Debug draw for Pyglet 2.1

这是对Pymunk的一个小更新,更新了Pyglet调试绘制代码,以与新发布的Pyglet 2.1配合使用。请注意,这意味着Pyglet 2.0.x不再工作。该版本还为Pypy添加了预构建的轮子,并提供了解决方案,直到Pypy发布新版本。

更改:

  • 支持Pyglet 2.1.x(这意味着Pyglet 2.0.x无法工作)

  • 重新添加了Pypy预制车轮

皮蒙克6.10.0(2024-12-22)

Pyodode/pyscript fixes

这是对Pymunk的一个小更新,使Pyodide轮子再次工作。它还在构建中引入了测试,以防止未来出现类似问题。

更改:

  • 将from_polars()静态方法添加到Vec 2d,以轻松根据极坐标创建Vec 2ds。

  • 改进的文档(Vec 2d)

  • 放宽Pyodide的CFFI版本要求,使其甚至在Pyodide更新CFFI之前即可工作。

  • 建造时测试podide车轮。

Pymunk 6.9.0(2024-10-13)

Python 3.13

这是CPython 3.13对Pymunk的小更新,带有轮子。此外,在此版本中,Pypmunk不再正式支持Python 3.7,因为它不再受支持,而且Pypmunk使用的CFFI也不再为其提供轮子。此外,Pypy在他们发布具有最新CFFI的版本之前有些崩溃。有关Pypy问题的详细信息,请点击此处:https://github.com/pypy/pypy/issues/5027一旦发布了带有修复程序的Pypy,预计Pymunk将再次发布轮子。

更改:

  • 删除了对Python 3.7的支持(因为最新的cffi不为其提供轮子)。

  • 修复了更改body_类型时SlideJoint的问题。

  • 使用日志模块记录花栗鼠级别错误

  • 为Python 3.13构建轮子

  • 对构建设置进行了现代化,以依赖pyproject.toml来获取更多设置。

  • 几乎完成了一个新的基准测试套件,主要是从Box2d移植过来的。

  • 类型的微小改进

  • Pypy没有预先构建的轮子,因为发货的版本配备了不支持最新setuptools的CFFI。

皮蒙克6.8.1(2024-06-05)

Space lock bug fix

这是一个补丁版本,它修复了单独的碰撞回调中的一个错误,如果在单独的碰撞回调之后运行另一个碰撞回调并且该回调在空间中添加或删除了某些内容,该错误可能会导致硬崩溃。

更改:

  • 在ARM github上构建/运行MacO ARM。

  • 修复单独回调中的锁bug

  • 改进文件

皮蒙克6.8.0(2024-05-10)

Spring improvements

该版本使两个弹簧约束的最大力属性按预期发挥作用(以前没有任何影响)。还可以通过新的回调完全覆盖弹簧的力/扭矩计算。除此之外,还在底层Chipmunk 2D库中添加了一系列修复程序。最后,现在可以创建具有约束的静态物体,然后将物体更改为动态物体以“开始”对其进行模拟。

更改:

  • 修复2个更改为动态并附加到约束的静态物体

  • 更新了Pymunk使用的Chipmunk 2D的分叉,修复了许多问题,包括Spring约束上的max Force。

  • 为DampedSpring和DampedRotarySpring添加了回调函数,以允许自定义力/扭矩计算。

皮蒙克6.7.0(2024-05-01)

Batch API can set body properties

此版本扩展了Pymunk 6.6.0中引入的实验批处理API。它现在具有有效设置物体属性(例如速度)的功能。与之前的API类似,新API减少了Python / C桥的负担,但也使其非常容易使用Numpy等对许多实体执行计算。现有的planet.py演示已更新,以展示新的批处理API,并轻松在批处理/无批处理之间切换以查看性能差异。

更改:

  • 将set body函数添加到pymunk.batch

  • pymunk.batch中使用传感器形状修复崩溃

  • 改良型

  • 显示碰撞的新交互示例

  • 修复改变类型的身体的约束

Pymunk6.6.0(2023-11-02)

Experimental Batch API

此版本添加了(实验性的)批处理API,可用于在一次调用中高效地获取实体属性,如位置和空间中所有实体/碰撞的碰撞数据。这样,调用底层c库(Chipmunk2D)的开销最小,在某些情况下可以实现巨大的加速。

更改:

  • 带有批处理API的新的pymunk.Batch模块。

  • 批量Api基准

  • Colors.py示例的批处理版本

  • 改良型

  • 改进构建/打包

Pymunk6.5.2(2023-10-22)

Python 3.12

这是一个次要版本,主要针对CPython3.12的发布轮。

更改:

  • 为CPython3.12构建轮子

  • 文档改进

  • 添加了实验环境PYMUNK_BUILD_SLIM来为WASM/PYODIDE瘦身。

  • 添加了在酸洗/复制时循环引用的断言

  • 修复了批处理API基准中的内存泄漏

Pymunk6.5.1(2023-06-26)

Fix source dist

一些定制的CFFI c标头和源文件现在包含在源代码分发中,因此可以完全从它构建Pymunk。

更改:

  • 在源代码dist压缩文件中包含pymunk自定义c文件

Pymunk6.5.0(2023-06-23)

Repeatable pickle/unpickle of simulation!

当酸洗时,内部碰撞状态现在也将被酸洗,这意味着未酸洗的空间将表现为原始的行为,即使在酸洗期间正在进行的碰撞中也是如此。如果要重放模拟,这将非常有用。

更改:

  • 内部碰撞状态的酸洗

  • 合并了最新的上游Chipmunk版本

  • 改进的类型提示

  • 改进的文档

Pymunk6.4.0(2022-11-20)

Support Pyglet 2 debug drawing!

这是一个较小的更新,主要更改是对最近发布的Pyglet 2的支持。同时,对Pyglet 1.5.x的支持已被弃用,当将pyglet_util与pyglet 1.x一起使用时,将记录有关该弃用的警告。另一个较大的变化是,这些示例已经被移到了pymunk的子包中,因此即使在从轮子上安装了Pymunk的情况下,也可以很容易地运行它们。

更改:

  • 支持使用Pyglet 2.0调试绘图

  • 不建议使用Piglet 1.5,并将在未来的版本中删除。

  • 将示例作为pyumnk.Examples包移动到发行版中。

  • 改进的类型提示

Pymunk6.3.0(2022-11-04)

Build wheel for CPython 3.11!

这是一个较小的更新,对为CPython3.11构建轮子构建管道进行了更改。一些内部部分也被重写了。

更改:

  • 将回调实现更新为CFFI推荐的方式

  • 改进断言以更早地捕获错误

  • 改进类型提示

  • 为更多目标打造车轮

  • 移除实验体。_id

Pymunk6.2.1(2021-10-31)

Build wheel for CPython 3.10!

这是一个较小的更新,对构建管道进行了更改,以构建适用于更多情况的轮子,特别是最近发布的CPython3.10。

更改:

  • 使用pyproject.toml

  • 要求CFFI 1.15以确保轮子在Apple ARM64/M1上制造正常。

  • 单据改进

  • 为更多目标打造车轮

Pymunk6.2.0(2021-08-25)

Improved transforms for debug drawing!

此版本包含使用调试绘图转换使用的增强功能,并更新到最新的git版本的Chipmunk。它还包含了一个新的例子,说明如何实现中心重力。

更改:

  • 将Chipmunk更新到最新的Git版本

  • 更新了调试绘图以支持旋转,并修复了约束的缩放

  • “行星”引力的新例子(从Chipmunk移植)

  • 修复了垃圾收集逻辑中可能出现的角例错误

Pymunk6.1.0(2021-08-11)

Transforms for debug drawing!

此版本中的主要改进是现在可以在SpaceDebugDrawOptions对象上设置变换,该对象在绘制任何内容之前应用。这在所有的调试绘图实现中都是有效的,例如,对于pyGame。通过这种方式,可以轻松地实现诸如相机平移之类的功能,从而轻松地调试绘制代码。有关这方面的示例,请参阅新的camera.py示例。

更改:

  • 向SpaceDebugDrawOptions添加了Transform属性。

  • 扩展了转换,允许使用@与另一个转换或Vec2d进行矩阵乘法。

  • 改进了向空间添加对象时的错误处理。

  • 改进了文档。

《Pymunk6.0.0》(2020-12-07)

Typehints, dropped Python 2, and Vec2d rework and wrapping upgrade!

这个版本是对Pymunk的一个非常大的更新,有许多突破性的API变化。很可能大多数升级的Pymunk用户需要做一些更改才能工作,但在大多数情况下,这些更改应该是次要的。

亮点-主要变化:

  • 需要使用Python3.6或更高版本。对包括2.7在内的更老的 Python 的支持已被删除。

  • 添加了类型提示。已为所有公共接口添加类型提示。

  • Vec2d(向量类)已被彻底检修。它现在是不变的子类 NamedTuple ,具有简化的API接口。详情见下文。

Vec2d更改:

  • Vec2d不再接受具有 .x.y 属性,但不支持 __getitem__[0] & [1] 在构造函数中。如果您有这样的对象,请重写 Vec2d(myobj)Vec2d(myobj.x, myobj.y)

  • Vec2d现在是不可变的。

    • 移除 __setitem__ )你不能这样做 Vec2d(1,2)[1] = 3 不再)。

    • 无法设置长度属性。 Vec2d(1,2).length = 10 ,而改用 Vec2d(1,2).scale_to_length(10)

    • 移除 Vec2d.get_length 方法(改用Length属性)。

    • 移除 Vec2d.rotate() 方法。使用 Vec2d.rotated() 取而代之的是。

    • 移除 Vec2d.rotate_degrees() 方法。使用 Vec2d.rotated_degrees 取而代之的是。

    • 无法设置角度属性 (Vec2d(1,2).angle = 3.14 )。使用 Vec2d.rotated() 取而代之的是。

    • 移除 Vec2d.get_angle 方法(使用 angle 而不是属性)。

    • 无法设置 angle_degrees 物业 (Vec2d(1,2).angle_degrees = 180 )。使用 Vec2d.rotated_degress 取而代之的是。

    • 移除 Vec2d.get_angle_degrees 方法(使用 angle_degrees 而不是属性)

    • 移除 Vec2d.normalize_return_length 方法(使用 Vec2d.lengthVec2d.normalized() ,或新的 Vec2d.normalized_and_length method )。

    • 移除 __iadd____isub____imul____ifloordiv____itruediv__ )。

  • 已删除 __nonzero__ 魔法。这在Python3中从来不起作用,也没有包含在任何测试中。

  • 已删除 __pow____rpow__ 魔法。再也不可能做了 Vec2d(1,2)**2 ,相反,您需要手动进行计算。

  • 已删除 __invert__ 魔法。再也不可能做了 ~Vec2d(1,2)

  • 已删除 __mod____divmod__ 魔法。再也不可能做了 Vec2d(1,2) % 2divmod(Vec2d(1,2), 2)

  • 删除了位操作右移位、左移位、或、与、异或。 (<<>>|&^ )。

  • 变化 abs(Vec2d(1,2)) 返回预期的向量长度,而不是 Vec2d(abs(x), abs(y))

  • Vec2d现在只支持与长度为2的其他Vec2或元组(序列)相加。

  • Vec2d现在只支持与其他长度为2的Vec2或元组(序列)的减法。

  • Vec2d现在只支持整数和浮点数的乘法运算。

  • Vec2d现在只支持整型和浮点型除法。请注意,不支持反向除法,即 1 / Vec2d(1,2)

  • Vec2d现在仅支持地板分割 (// )通过整型和浮点型。请注意,不支持反转楼层分割,即 1 // Vec2d(1,2)

  • 改进了Vec2d中的错误检查,当操作员(魔法,如 __add__ )与不兼容的类型一起使用。

  • 删除了创建具有空构造函数的零Vec2d的选项。 Vec2d() 应替换为 Vec2d.zero()

  • 制造 Vec2d 的一个子类 NamedTuple

    • Vec2必须用独立的 x 以及一个 y 价值观。

    • Vec2d((1,2)) 可以更改为 Vec2d(*(1,2))

    • Vec2d(Vec2d(1,2)) 可以更改为 Vec2d(*Vec2d(1,2))

    • Vec2d() 可以更改为 Vec2d(0,0)Vec2d.zero()

    • Vec2d(1,2) 不再等于 [1,2] 因为它们是不同类型的。(但是 Vec2d(1,2) == (1,2) 仍然是正确的)

  • 放松 get_angle_betweenconvert_to_basiscpvrotatecpunvrotate 接受大小为2的元组作为参数,就像Vec2d上的大多数其他方法一样。

一般更改:

  • add_collision_handler(a,b)add_collision_handler(b,a) 将返回相同的处理程序。第132期。

  • 形状使用的实体必须在添加形状之前(或同时)添加到空间中。这一更改将帮助Pymunk的用户发现错误,修复旧代码应该是直截了当的。

  • 需要使用Python3.6+。如果您使用的是较旧的Python,请继续使用5.x系列的Pymunk,直到可以升级为止。

  • Space.add()Space.remove() 不再接受对象列表(形状、实体或约束),仅直接接受对象。可以更新现有代码以解压缩参数: space.add(list_of_stuff) vbl.成为 space.add(*list_of_stuff)

  • ShapeFilter.ALL_MASKSCATEGORIES 更改为静态方法。 ShapeFilter.ALL_MASKS vbl.成为 ShapeFilter.ALL_MASKS()ShapeFilter.CATEGORIES 几个问题 ShapeFilter.CATEGORIES()

  • 注意:指定颜色时需要4个数字的元组(或使用 SpaceDebugColor 类)。在测试过程中,发现一些演示使用的是3的元组,这在Pymunk 6.0(或更早的版本)中不起作用。

  • 返回一个 PointQueryInfo 对象来自 Shape.point_query ,而不是前一个 (distance, PointQueryInfo) 元组。需要该距离的代码可以从 PointQueryInfo.distance

  • 已删除 pymunk.inf 。使用标准的Python float('inf') 取而代之的是。

  • 已重命名的包 pymunk.constraintpymunk.constraints 。导入先前名称的代码应更新为从新名称导入。

  • 变化 pygame_util.positive_y_is_up 缺省值为 False 。依赖旧缺省值的现有代码应设置所需的值 (True )。对于新代码,更好的做法可能是使Pymunk模拟的行为像原生的pyGame坐标一样。有关示例,请参见Examples文件夹中的Examples。

  • 现在预计,位置函数需要一个 Vec2d 或长度为2的元组已经是元组(或 Vec2d )。以前,通过调用 tuple(argument) 。要修复旧代码,只需将参数包装在 tuple( ... ) 。(注意:由于没有类型检查,长度为2的列表也可以使用,但是不支持该列表,并且可以随时更改。

  • BB 基类更改为 NamedTuple 。它们现在必须用来建造 leftbottomrighttop 作为单独的论据。

  • 回复: BB 会回来的 BB(left=1, bottom=5, right=20, top=10) 而不是 (1, 5, 20, 10)

  • BB 现在是不可变的。

  • 启用新的回调 Constraint 对象, pre_solvepost_solve ,它可用于在约束的求解器之前或之后运行函数。

  • 在上添加了辅助方法 Transform 轻松创建要平移、缩放和旋转的变换。

  • 移除了现在未使用的pymunkOptions模块。

  • 更改了自动组合测量的类型 march_*.sample_func 需要长度为2的元组,而不是Vec2d(以提高性能)。第126期。

  • 已删除 march_*.segment_func 参数,而是返回一个 PolylineSet 结果就是。这允许将来进行优化,并且更易于使用。第126期。

  • 添加了代码,使Pymunk在不需要在PyInstaller、py2exe以及可能还有其他捆绑包中进行额外配置的情况下工作。

  • 添加了调试日志以更容易地理解c内存问题。使用logging.DEBUG,因此应该很容易解决。

不太可能影响现有代码的微小更改:

  • 已删除 pymunk.chipmunk_path

  • 变化 Shape.sensor 类型为bool(来自int)。

  • 添加检查以确保已腌渍的对象是由加载它的代码所用的相同的Pymunk版本进行的。内部的酸洗格式可以在主要版本、次要版本和点版本之间进行更改。

  • 格式稍有更改 pymunk.chipmunk_version 版本字符串。

  • 小改动以使冲突处理程序起作用 (beginpre_step .)返回赋值的函数,而不是包装的函数。

  • 删除了多余的 *args**kwargs 争论到 CollisionHandler.__init__ 方法。

  • 派芒克源代码格式化与黑色和isort。

  • moment_for_poly()area_for_poly() 现在需要长度为2的元组的序列(元组/类似列表的对象)。

  • 添加参数的缺省值 pointapply_force_at_local_point

  • 删除了自变量的缺省值 apply_impulse_at_world_point 。只需指定 point = (0,0) 以模仿旧有的违约模式。

  • 添加了许多断言以检查无论何时长度为2或 Vec2d 预计元组的长度为2。工作代码不太可能受到影响,但错误将更容易找到。

幕后:

  • 为了允许添加一些Chipmunk没有的高级功能,用于调用C代码的方法已更改为CFFI API模式。除了更容易扩展外,它还提供了更高的性能。

《Pymunk5.7.0》(2020-09-16)

Fix release

此版本包含一系列较小的修复和改进。

更改:

  • 修复了PyInstaller onefile的问题。

  • 改进了Vec2d创建的性能。谢谢米哈伊尔·西敏!

  • 处理长度为0的弹簧的调试绘图。

  • 从空间访问时对实体和约束进行排序。

  • 添加了Space.USE_SPATIAL_HASH函数,以支持使用空间散列作为其空间索引,这可以在存在大量大小相似的对象时提高性能。

  • 修复了Vec2d投影获取元组作为其他参数时的情况。

  • 修复了Vec2d投影的ZeroDivisionError。谢谢穆罕默德·萨阿德·伊本·塞迪克!

  • 修正了Shape.Center_of_Graight属性的返回类型(现在返回Vec2d而不是CDATA)。

  • 修复了安装开发人员依赖项时的问题。

  • 增加了Chipmunk坦克的例子(可以在Examples文件夹中找到)。

  • 改进了文档。

当心!Pymunk的一个重大更新正在进行中,将以Pymunk6.0的形式发布。它将包含很大的变化,其中一些非常违反API,而且它还将放弃对Python2的支持。

Pymunk5.6.0(2019-11-02)

Fix to avoid incompatible CFFI version

此版本的主要目标是确保在通过pip安装Pymunk时安装兼容版本的CFFI。不幸的是,在Linux的CFFI 1.13.1上有一个问题。(更高版本和更早的版本可以正常工作)

更改:

  • 添加了CFFI不能为1.13.1的要求(因为1.13.1不起作用)。

  • 更新CFFI定义以防止最新CFFI中的弃用警告。

  • 将普通属性添加到仲裁器对象。

  • 从提交的代码中删除已编译的文档。

  • 从Travis和Appveyor配置中删除了CPython3.4的构建/测试,因为它不再受支持。

  • 更新小程序示例以使用小程序1.4。

  • 修复了平台示例中的小问题。

  • 改进了文档。

Pymunk5.5.0(2019-05-03)

Updated Chipmunk version, FreeBSD, Android/Termux support and more!

此版本包含许多改进。Chipmunk被更新到最新版本,然后一些未合并的PR被合并。(Chipmunk的GIT回购已经死了,所以在手动审核后,Chipmunk将包括未合并的PR)。另一个重大改进是,Pymunk现在可以在免费BSD上运行。它还在Android上的Termux上进行了测试,并对安装过程进行了一些改进。还包括一些较小的修复程序。

更改:

  • 将Chipmunk更新为7.0.2+未合并PR

  • 可以在FreeBSD上安装和运行Pymunk

  • 可以在Android上的Termux上安装和运行Pymunk

  • 修复带有半径的多边形的调试图形

  • 改进了PYGAME上的片段调试绘制

  • 修复在未安装车轮包的情况下安装时的问题

  • 新的约束演示

  • 改进的文档

Pymunk5.4.2(2019-01-07)

Fix for chipmunk.dll load troubles on windows

此版本修复了Windows上的一个问题,该问题使chipmunk.dll文件依赖于libwinpline-1.dll,由于新的构建设置,在Pymunk 5.4.1中发生了该问题。修复意味着目前在Windows上禁用线程解算器。在实践中,这应该不是一个大问题,线程解算器在运行Windows的桌面上的性能优势尚不清楚。

更改:

  • 在Windows上禁用线程解算器。

Pymunk5.4.1(2018-12-31)

Improved packaging

这一版本包括对Pymunk的包装进行了一些修复。一个允许为Conda构建的修复程序,以及在Linux上构建二进制轮子的一些更改。

更改:

  • 修复以帮助Pymunk使用冰柜,如CX_FREAK。

  • 更好的车轮,现在它们包含了正确的标签

  • 在编译Chipmunk时使用自定义CFLAGS修复问题

好好享受吧!

Pymunk5.4.0(2018-10-24)

Fix support for MacOS 10.14

主要修复程序是允许在最新版本的MacOS上安装Pymunk。此版本还包含一系列次要修复,并像往常一样对文档、测试和示例进行了改进。

更改:

  • 在较新版本的MacOS上,只能在64位模式下编译(32位已弃用)

  • 改进的文档、示例和测试

  • 在传递Vec2d而不是元组时修复Moment_for_*

  • 修复在步骤期间向空格添加或删除多个对象时的大小写。

  • 在Windows上允许线程求解器。

  • 使用msys mingw在Windows上编译Chipmunk(以前的解决方案已弃用)。

好好享受吧!

Pymunk5.3.2(2017-09-16)

Fixes ContactPointSet updating in Arbiter

此版本包含对仲裁器上的ContactPointSet的修复。有了这个修复,它可以在碰撞回调期间更新联系人,例如更新正常,就像突破游戏示例中一样。

更改:

  • 修复仲裁器.联系人_点_集

Pymunk5.3.1(2017-07-15)

Fix for Pycparser 2.18

此版本包含对最近发布的Pycparser 2.18的修复,该版本由Pymunk通过使用CFFI间接使用。

更改:

  • 修复了使用Pycparser 2.18时中断的回调。

Pymunk5.3.0(2017-06-11)

Pickle and copy support!

本版本新增了对Pickle(保存和加载)和复制的支持。这一点我已经想了很长时间了,当我在Github上收到Rick-C-137对它的功能请求时,我进行了最后的努力。看见 examples/copy_and_pickle.py 举个例子。

该功能本身非常易于使用,Pickle的工作方式与预期不谋而合,而Copy则是一个简单的方法调用。但是,请注意,对带有回调函数的PICLE空间的支持取决于PICLE协议版本。最早的PICLE协议对PICLE功能的能力有限,因此要获得最大的功能,请尽可能使用最新的PICLE协议。

更改:

  • 泡菜支持。大多数对象都可以进行酸洗和非酸洗。

  • 复制支持和方法。大多数对象现在都有一个Copy()函数。同样,标准库的复制深度复制()函数也可以正常工作。

  • 修复了BB.Merge和其他BB功能中的错误。

  • 改进了文档和测试。

  • 新的Kivy示例(如前面的新闻条目所述)。

我希望你会喜欢它!

Pymunk5.2.0(2017-03-25)

Customized compile for ARM / Android

此版本的主要原因是ARM/Android交叉编译支持,这要归功于可以覆盖c编译器和链接器。在这个版本发布后,不需要修补Pymunk代码,就可以为Pymunk创建一个Python-for Android构建食谱。它也应该更容易为其他环境构建。

变化

  • 允许使用CC、CFLAGS、LD和LDFLAGS环境变量覆盖编译器和链接器,从而允许定制Chipmunk的编译。(通常您不需要这个,但在某些情况下它很有用)

  • 使用pyglet_util修复有时损坏的多边形绘制。

  • 添加功能,允许您设置形状的质量,并让Pymunk自动计算身体质量和力矩。

  • 不要对32位和64位版本使用单独的库命名。(应该不会有任何明显的效果)

Pymunk5.1.0(2016-10-17)

A speedier Pymunk has been released!

此版本是作为 基准 在Pymunk5.0和4.0上完成。Pymunk 5.0在PyPy上已经非常快了,但在CPython中有一些回归。事实证明,这一变化的一个重要部分是Vec2在两个版本中的处理方式。Pymunk 5.1包含优化的代码,以帮助缩小这种差异的很大一部分。

变化

  • 由于改进了Vec2d的处理,相比于Pymunk 5.0,性能有了很大提高。

  • 文档方面的改进。

  • Shape.point_Query的返回类型中的微小更改。现在,它正确地返回了文档中所写的元组(距离,信息)。

  • 将Poly.create_box拆分为两个方法Poly.create_box和Poly.create_box_bb,以便更清楚地了解发生了什么。

我希望你会喜欢这个新版本!

Pymunk5.0.0(2016-07-17)

A new version of Pymunk!

这是《Pymunk》的一次大发行!正好赶在Pymunk明年10岁生日之前!

  • 在Windows上支持64位Python

  • 更新为使用Chipmunk7,包括许多重大改进

  • 更新为使用CFFI进行包装,改进了开发和包装(车轮,耶!)

  • 带matplotlib绘图帮助的新util模块(带有示例Jupyter笔记本)

  • 支持自动生成几何图形。可用于可变形地形之类的东西(包括示例)。

  • 过时的子模块pymunk.util。

  • 许多较小的改进

新版本还在Travis和Appveyor上进行了测试,以确保良好的代码质量。

我希望你会喜欢这个新版本!

Pymunk4.0.0(2013-08-25)

A new release of pymunk is here!

这一版本绝对是一个里程碑,金龟子已经5岁多了!(第一版于2008年2月发布,用于PyWeek比赛)

在这个版本中,已经对Pymunk做了许多改进。它包括了对侏儒的调试绘图(在3中引入了对pyGame的调试绘图),更新了的Chipmunk版本,以及由此产生的API调整,更多更好的例子,以及一如既往的整体润色。

在新的Chipmunk版本(6.2测试版)中,碰撞检测的行为可能会略有不同,因为它使用的算法与早期版本不同。新的算法意味着现在将检测到段到段的冲突。如果您有一些不想冲突的段,则可以使用传感器属性或自定义冲突回调函数。

要查看新的pymunk.pyglet_util模块的运行情况,请查看pyglet_util_demo.py示例。它有一个类似于pyGame_util的接口,但由于pyglet和pyGame之间的不同而有所不同。

对API进行了一些添加和更改。现在,在模拟步骤中(例如,在回调中)添加和删除物体和形状是合法的。实际移除将安排在模拟步骤完成后立即进行。其他更改包括更改形状的主体,获取形状的BB,以及创建具有空体的形状。在实体上,现在可以检索附加到它的形状和约束。

此版本已经过测试,并在CPython2.5、2.6、2.7、3.3和PyPy 2.1上运行。至少已经在以下平台上运行了一次单元测试:Windows上的32位CPython,Linux上的32位和64位CPython,以及OSX上的64位CPython。在上述平台之一上运行的PyPy 2.1。

变化

  • 新的DRAW模块帮助进行侏儒原型制作

  • 更新了Chipmunk版本,增加了新的冲突检测代码。

  • 添加、改进和修复损坏的示例

  • 可以在形状上切换主体

  • 使在模拟步骤中添加和删除实体成为合法操作

  • 将造型和约束属性添加到实体

  • 可能得到一个形状的BB,他们现在允许构造函数中的空体

  • 添加了多边形的半径属性

  • 将Poly.get_Points重命名为Get_Verits

  • 已将Segment.a和Segment.b属性重命名为UNSAFE_SET

  • 添加了使用pyinstaller的示例

  • 修复了报告的许多错误

  • 改进不同地方的文档

  • 一般抛光和清理

我希望你会喜欢这个新版本!

Pymunk3.0.0(2012-09-02)

I'm happy to announce pymunk 3!

这一版本比起之前的2.x版本来说,是一个明显的改进。它的特点是有一个大大改进的文档,一个更新的Chipmunk版本和附带的API调整,更多和更酷的例子。此外,为了帮助进行快速原型制作,Pymunk现在包括了一个新的模块pymunk.pyGame_util,可以在电子游戏表面上绘制大多数物理对象。查看新的pyGame_util_demo.py示例,以了解它的工作原理。

另一个新特性是改进了对在非调试模式下运行的支持。现在可以将编译标志传递给setup.py以在发布模式下构建Chipmunk,并且有了一个新的模块,可以用来关闭Chipmunk的调试打印。

此版本已经过测试,并在CPython2.6、2.7、3.2上运行。至少已经在以下平台上运行了一次单元测试:Windows上的32位Python,Linux上的32位和64位,以及OSX上的32位和64位。

这个版本也已经在PyPy 1.9上进行了测试,所有测试都通过了!

变化

  • 添加了几个新的有趣的例子

  • 新的DRAW模块可帮助进行电子游戏原型制作

  • 新的pymunkOptions模块允许禁用调试

  • 在OSX上测试,包括编译的dylib文件

  • 大量扩展和修改的文档和主页

  • Chipmunk的最新进展

  • 较小的API更改

  • 一般抛光和清理

  • 闪亮的新域名:www.pymunk.org

我希望你会喜欢它!

Pymunk2.1.0(2011-12-03)

A bugfix release of pymunk is here!

这个版本中最明显的变化是,现在的源代码版本包含了所有这些内容,包括示例和Chipmunk源代码。:)其他修复是Body的新速度限制属性,以及一些已移除的方法(移除它们的原因仍然是相同的版本:无论如何,您都会收到调用它们的异常。删除应该不会影响正常运行的代码)。注意,所有用户都应该通过将输入参数设置为None来创建静态实体,而不是使用无穷大。Inf将在即将发布的版本中删除。

变化

  • 将pymunk.inf标记为不推荐使用

  • 为车身添加了速度限制属性

  • 修复了64位Python上的错误

  • 已使用Python2.5重新编译chipmunk.dll

  • 更新的Chipmunk来源。

  • Vec2d中获取整型元组的新方法

  • 删除了旋转和调整散列大小的方法

  • 从示例/测试中删除了pymunk.init调用

  • 更新了创建静态实体的好方法的示例/测试

祝你玩得开心!

Pymunk2.0.0(2011-09-04)

Today I'm happy to announce the new pymunk 2 release!

这一版本中的新玩意主要来自更新后的Chipmunk库。现在身体可以睡觉了,有了一个新的数据结构来保存对象和其他更小的改进。更新的版本号主要来自于新的睡眠方法。

版本中的另一项新功能是一些简化,你现在不需要自己初始化金龟子,这是在导入时自动完成的。另一个很酷的特性是,Chipmunk在最新的PyPy源代码上通过了所有的单元测试,我认为这是一件很棒的事情!我还没有时间做任何性能测试,但PyPy声称ctype库比cpython有了改进。

注意,这个版本并不是完全向后兼容的,一些细微的调整将是必要的(主版本号增加的原因之一)。

与上一版本相比的更改:

  • 移除了init pymunk方法,它在导入时自动完成

  • 支撑睡梦中的身体。

  • 更新到最新版本的Chipmunk

  • 更多API文档,更多单元测试。

  • 现在仅依赖于Windows上的msvcrt.dll。

  • 消除了对SetupTools的依赖

  • 对其他API的次要更新,添加了一些缺少的属性和方法。

Pymunk1.0.0(2010-07-16)

Pymunk0.8.3(2009-07-26)

Pymunk0.8.2(2009-04-22)

Pymunk0.8.1(2008-11-02)

《Pymunk0.8》(2008-06-15)

在Pypi上首次公开发布。

Pymunk0.1(2007-08-01)

第一次公开发布。在PyWeek游戏竞争论坛上,后来在我们的PyWeek 5中使用。