Tags

Tags give the ability to mark specific points in history as being important
  • v1.2.0

    3890b1b4 · Removed CLAUDE.md. ·
    Release 1.2.0 (2026-08-23)
    
    - API documentation, published at
      <https://ocaml.org/p/ifs-fractals> and built locally with `dune build
      @doc`. The library has an interface file, `lib/ifs_fractals.mli`, in
      which every type, function and predefined fractal carries a
      documentation comment, and `doc/index.mld` is the landing page of the
      package. The interface also settles what the library actually offers:
      the plumbing of the PNG writer (`output_png`, `add_chunk`,
      `crc_table`, `encode`, `ramp_color`) and of the Fractint reader
      (`words`, `group_entries`, `thresholds`, `cumulate`, ...) is no longer
      exported, along with `select_image`, `pixel_of_point`, `accumulate`
      and `viewport`. Everything the command and the documented API use is
      unchanged.
    - Fixed: `sierpinski` drew an empty window and `koch` a speck in the
      middle of one. Both had their coefficients written in the order of a
      Fractint table — `a b c d e f` for `x' = a*x + b*y + e` — rather than
      the order of `kf`, so neither described the fractal it was named after,
      and neither landed in the region its record asked to display. The
      transforms are reordered and both viewports now frame the attractor:
      `sierpinski` is the triangle on (0,0), (2,0), (1, √3), and `koch` the
      curve from (0,0) to (1,0). This had been the case since the first
      commit, in 2010.
    - A test suite, run with `dune test`: the affine maps and the projection,
      the chaos game, the framing of an attractor, the Fractint parser and
      the errors it reports, and the PNG writer, whose output is decoded and
      checked rather than counted in bytes. It needs no display and no new
      dependency.
    - The predefined fractals moved out of `lib/ifs_fractals.ml` into their own
      `lib/fractals.ml`, together with the `point`, `transfo` and `ifs` types,
      so that adding or tuning a fractal no longer touches the code that draws
      it. `Ifs_fractals` re-exports them, so the library API is unchanged, and
      so is the toplevel workflow (the loader now uses `#mod_use` for the new
      file).
    - `show fs n` draws a fractal, waits for a keypress and closes the window.
      Unlike `draw`, it leaves the program inside an event call, which is what
      lets the window manager's close button work.
    - Fixed: after the graphics window was closed — by `Graphics.close_graph`
      or by the window manager — `draw` failed with `Graphic_failure "graphic
      screen not opened"` instead of opening a new window. `window_open` is now
      a function that asks the graphics library rather than a stale flag.
    - Fractals can be read from Fractint `.ifs` files: `ifs-fractals -f
      FILE.ifs NAME` from the command line, `load_fractint` from the library.
      The format's plain weights are converted to cumulative thresholds (or
      derived from each map's determinant when the file gives none), and the
      viewport, which the format does not record, is fitted to the attractor
      by `fit`. `example/classics.ifs` collects a dozen classic systems to
      try it on.
    - Three-dimensional systems — Fractint's `(3D)` entries, twelve or
      thirteen numbers per transform — are read and drawn as well, projected
      orthographically from a direction given by `-v YAW,PITCH` in degrees
      (`?yaw` and `?pitch` in the library). Reading a file now returns a
      `system`, either `Flat of ifs` or `Solid of ifs3`; `draw_system`,
      `show_system` and `save_png_system` take either.
    
  • v1.1.0

    Release 1.1.0: headless PNG rendering and density coloring.
    
  • v1.0.0

    Release 1.0.0 (2026-07-27)
    
    First release on opam, sixteen years after the first commit.
    
    - Packaged with dune: the code now builds as a library (`ifs-fractals`,
      module `Ifs_fractals`) and an `ifs-fractals` command-line executable.
    - The historical toplevel workflow (`#use "ifs_fractals.ml";;`) still works
      from a clone of the repository.
    - Sixteen predefined fractals, including the five added in 2026: `maple`,
      `fiddlehead`, `vegvisir`, `sunflower` and `lace`.