Skip to content

Releases: virgesmith/neworder

v1.5.0

15 Feb 12:34
82b26ab

Choose a tag to compare

Functional changes

  • Support for freethreaded python and multithreading. Adds functions:
    • neworder.freethreaded() returns whether the neworder module has been compiled in freethreaded mode (requires a
      freethreaded python interpreter)
    • neworder.thread_id(): neworder.log(...) now reports this value.

Other changes

  • Updated parallel and option examples with alternative (to MPI) implementations using multithreading.
  • Added documentation and tests for multithreaded implementations.

v1.4.4

27 Nov 19:38
ab4e162

Choose a tag to compare

Maintenance release

  • updated python version support
  • switched default (linux) MPI implementation to openmpi

Maintenance release v1.4.3

14 Jun 14:37
d8a61ac

Choose a tag to compare

Functional changes

(none)

Other changes

  • updated supported python versions
  • switch to uv package manager for CI builds
  • removed unfinished/untested models
  • reformatted code

Maintenance release v1.4.2

27 May 18:25

Choose a tag to compare

Functional changes

  • add RunState enum
  • update documentation

Other changes

  • Update dependencies
  • Update CI: python 3.10/3.11/3.12
  • linting and formatting

1.4.1

13 Dec 20:28

Choose a tag to compare

patch to fix documentation

1.4.0

26 Aug 18:49

Choose a tag to compare

Packaging changes

The package now contains the following optional dependencies/extras:

  • geospatial: geospatial graph functionality based on nextworkx, osmnx, geopandas etc
  • parallel: MPI
  • dev: for local package development

which can be installed like so, e.g.

pip install neworder[parallel]

Functional changes

  • neworder.geospatial.GeoSpatialGraph is now available - if the geospatial extra has been selected. (Previously the implementation was in an example)
  • Changes to the mpi submodule:
    • the functions rank() and size() are now attributes: RANK and SIZE.
    • there is a new COMM attribute, which is either an mpi4py.MPI.Intracomm instance or None depending on whether the parallel extra was installed.
  • In the time submodule, the following functions are now attributes:
    • never() becomes NEVER
    • distant_past() becomes DISTANT_PAST
    • far_future() becomes FAR_FUTURE.

Internal changes

  • Model.modify() no longer takes an integer argument. Access neworder.mpi.RANK from within the function.
  • seeder functions no longer take an integer argument. Access neworder.mpi.RANK from within a custom implementation function if necessary.
  • packaging and CI improvements

v1.3.1

29 May 13:06

Choose a tag to compare

Packaging changes

Conda builds are no longer supported as of this release. Conda users should use pip to install version 1.3 or higher.

Functional changes

  • Custom timeline support. Users can now subclass neworder.Timeline to create their own timeline implementations and use them within their model.
  • The following timeline attributes that were methods are now properties: at_end, dt, end, index, nsteps, start, time. Although this is potentially a breaking change, it's not considered significant enough to warrant a major version bump.
  • The seeder argument to the base model constructor is now optional, and defaults to neworder.MonteCarlo.deterministic_independent_stream.

Internal changes

  • Refactoring of Model base class and Timelines to support custom timelines
  • Changes to CI workflows

Bugfixes

  • Security fix for example dependencies

v1.2.1

17 Apr 17:57

Choose a tag to compare

Functional changes

  • Added "infection" example to demonstrate movement on a spatial network. In order to avoid a large increase in package dependencies, the spatial domain implementation (GeospatialGraph) is contained within the example, not the neworder package itself.
  • Improved and extended "boids" examples, now with 2d and 3d versions
  • added functionality to StateGrid to translate positions according to the given edge behaviour
  • python 3.9 and below are no longer supported

Internal changes

  • updates to CI

bugfixes

  • fixed display issue with n-body example

v1.2.0

08 Jan 15:25

Choose a tag to compare

Functional changes

  • The neworder Monte-Carlo engine can now be used directly as a numpy random generator, giving access to all of numpy's random functionality. Create a generator via the as_np adapter method, e.g.:

    model = no.Model(no.NoTimeline(), no.MonteCarlo.deterministic_identical_stream)
    gen = no.as_np(model.mc)
    normals = gen.normal(size=100)
  • MonteCarlo.state() method now works on OSX (was previously disabled due to an apparent bug in the MT19937 implementation).

Internal

  • numerous minor updates
  • use C++20 standard

v1.1.1

15 Mar 08:11

Choose a tag to compare

Functional changes

[none]

Internal

  • Fix spurious MSVC17 compiler error on conda.