All Versions
Latest Version
Avg Release Cycle
12 days
Latest Release
389 days ago

Changelog History

  • v1.2.1.0 Changes

    November 14, 2020
    • Introduces gregorianDateTime, which is the reverse of julianDay: given a JD, return a tuple with (year, month, day, decimalHour).
  • v1.2.0.0 Changes

    September 14, 2020

    BREAKING CHANGE: splitDegrees now takes options that reflect the options in the underlying library.

    • Constructors for JulianTime and SiderealTime are now exposed.
    • Introduce SplitDegreesOption enum for all options one can split degrees with; amends splitDegrees to take
      said options as the first argument.
    • splitDegreesZodiac is unchanged, though a mere veneer for the now more powerful splitDegrees.
    • Since splitDegreesZodiac goes the extra enum-mile to provide human-readable zodiac names, and the underlying
      library can also split on Nakshatras, we now include the NakshatraName enum. Names are from wikipedia
      and I saw some variants, so please forgive any mispellings!
  • v1.1.0.0 Changes

    September 12, 2020

    BREAKING CHANGE: the Coordinates type has been retired, in favor of the more specific
    GeographicPosition and EclipticPosition. calculateCoordinates is now calculateEclipticPosition,
    and the calculateCusps* family now takes a GeographicPosition as part of its inputs.

    • Introduces an Internal module with types and helpers that this library introduces,
      which are not native to the underlying C library. Import at your own risk! (the "curated"/
      "stable" ones are re-exported by the main module.)
      • Deprecates the Coordinates type, in favor of EclipticPosition.
    • Introduces functions to calculateEquatorialPosition and calculteObliquity at a given time,
      ๐Ÿ‘ as well as types that better convey the different types of positions (EquatorialPosition, ObliquityInformation).
    • Some astrology helpers: convert between equatorial and ecliptic (and vice-versa,)
      obtain the Delta Time effective at a given moment, obtain the house position of a given body.
      ( Note: the calculateHousePosition function is more useful for working near the polar circles or for bodies
      off of the ecliptic -- the ARMC and obliquity need to be calculated or provided, it's simpler
      if you already have the cusps: just check which cusps a given longitude falls between -- no need for
      this function!)
  • v1.0.0.0 Changes

    September 07, 2020
    • โ™ป๏ธ 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 Changes

    September 07, 2020
    • ๐Ÿ›  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.

    ๐Ÿ‘€ See notes in #9

  • v0.3.0.0 Changes

    September 05, 2020
    • โฌ†๏ธ 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:
    • 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,
      0๏ธโƒฃ 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.

    CI continues to not work, despite my insane efforts to resolve.

  • v0.2.0.0 Changes

    September 04, 2020
    • 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.2 Changes

    August 13, 2020

    ๐Ÿ— The build in hackage was failing, it seems like all header files need to be explicitly stated so they're included in the tarball!

  • v0.1.0.0 Changes

    August 12, 2020
    • 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.