Changelog of @hackage/swiss-ephemeris 1.0.0.0

Changelog for swiss-ephemeris

v1.0.0.0 (2020-09-07)

  • Refactor the calculateCusps function:
    • Return a simple list of cusps. This allows for future implementations of exotic systems that have more (or fewer?) cusps, and hews closer to regular usage (which iterates over the cusps.)
    • The house system comes first, to allow for more ergonomic partial application for uses where one system is the "default" (e.g. traditionalCusps = calculateCusps Placidus.)
  • Cleans up haddocks, adds many links to the original docs (and notes the headings, since updates to those seem to break hyperlinking?)

v0.3.1.0

  • Fixes occasional segmentation fault (caught most often in the more memory-strapped CI server than in my computer,) caused by using alloca for the error string and, when no error string was populated, ending with undefined behavior. Now we explicitly allocate the 256 chars that the documentation and C sources recommend, which seems to be always freed by Haskell, vs. leaving a hole somewhere when the underlying library fails to terminate the string.

v0.3.0.0

Breaking fixes to calculateCusps and calculateCoordinates

  • Upgrades to v2.09.03 of the C library, to incorporate some bug fixes that seem marginally related to random breakage I've seen; read more at: https://www.astro.com/swisseph/swephprg.htm#_Toc49847971
  • Introduces withoutEphemerides which sets the ephe path to NULL (via the also new setNoEphemeridesPath) and takes care of calling closeEphemerides. Use this or withEphemerides for memory safety, only call the functions directly if you really know what you're doing (i.e setting/closing ephemerides in some other manner.)
  • Both calculation functions are now IO computations, to reflect the fact that they may interact with ephemeris data and allocate memory that closeEphemerides has to free.
  • More closely reflects the underlying behavior for calculating cusps: it may return cusps in the Porphyrius system if given a point for which the chosen system fails. To more explicitly reflect this, we now have calculateCuspsStrict which returns a Left value if the requested house system couldn't be used. calculateCuspsLenient always returns a calculation, and is aliased to calculateCusps as the "default" method.
  • Since the calculation may have changed the house system, we now return a systemUsed entry in the CuspsCalculation record.

v0.2.0.0

  • Introduces withEphemerides for bracketed access to the ephemeris directory.
  • Changes the signature of calculateCusps to return a Left value if the underlying library is unable to calculate the cusps.
  • Introduces "monadic" versions of the calculations that work with instances of MonadFail: calculateCuspsM and calculateCoordinatesM
  • Improves test coverage with property testing.

v0.1.0.0 - 0.1.0.2(2020-08-12)

  • Bundles the C code for v2.09.01 of Swiss Ephemerides -- refer to that page and related documentation for other possible additions to this package!
  • First release with basic bindings to calculate the coordinates of bodies between the Sun and Chiron, plus cusps and major angles -- calculateCoordinates and calculateCusps, respectively.
  • The functions setEphemeridesPath and closeEphemerides are provided to initialize (important) and release (less important) resources related to caching calculations and locating the data files for ephemerides.