Skip to content
Richard Thomson edited this page Jan 25, 2015 · 63 revisions

This is the current release as a Windows Installer package.

Release Plan

The farther out a release is on this plan, the more flexible and vague are the goals.

Iterated Dynamics 1.0

  • do some more code cleanup, but not any radical restructuring:
  • convert from C to C++
  • replace single-line /* */ comments with // comments
  • replace chained multiple assignments with multiple single assignments
  • replace use of char* strings with std::string
  • eliminate crazy memory casting/aliasing that was done because of impoverished DOS execution environment
  • replace int 0/1 with bool
  • name all the magic values with enums or consts
  • split multiple declarations (int i, j;) into multiple single declarations (int i; int j;)
  • localize variable declarations to their first use
  • localize variables to for and if scope
  • initialize all variables
  • replace (void) argument lists with empty argument lists ()
  • replace C-style casts with C++ cast operators
  • eliminate unnecessary struct decorations on types
  • write numeric constants directly instead of casting
  • replace use of malloc and free with standard library containers
  • eliminate use of MemoryAlloc and memory.cpp
  • replace fixed-size arrays with std::vector
  • remove debug flag code
  • eliminate integer math code?
  • fix these issues
  • restore mouse support
  • eliminate the use of curses in the X11 version
  • get the minimal X11 code working similar to the way the Win32 code is working with a CGA color style 'text window' instead of curses
  • change all references from 'fractint' to 'iterated dynamics', except when talking about history
  • eliminate 286/287, 386/387, 486/487 and pentium code paths
  • automated regression suite based on reference images from the DOS version
  • clean report from cppcheck
  • clean report from clang static analyzer
  • replace Driver struct with an interface and derived classes
  • replace monolithic externs.h and prototyp.h with module-oriented headers.
  • deprecate legacy parameters:
  • tplus
  • noninterlaced
  • maxcolorres
  • pixelzoom
  • warn
  • gif87a
  • iterincr
  • tweaklzw
  • minstack
  • video
  • askvideo
  • printer
  • printfile
  • rleps
  • colorps
  • epsf
  • title
  • translate
  • plotstyle
  • halftone
  • linefeed
  • comport
  • promote this project
  • use C++11, but no boost
  • exception: allow unit testing with use Boost.Test, but don't use Boost in the implementation. Rationale: don't cripple ourselves without a testing framework, but don't make too radical a change in the code base for this release

Iterated Dynamics 2.0

  • allow use of boost
  • separate UI from application logic
  • switch to OpenGL for all pixel and primitive rendering operations
  • switch UI from polling to event-driven
  • switch to a wxWidgets based UI with a 'CGA text window' wxWidgets component to handle the text screens

Iterated Dynamics 3.0

  • replace the major CGA text window options screens with wxWidgets dialogs
  • replace crazy homebrew complex types/math with C++ std::complex<>
  • replace homebrew bignum with boost multiple precision library with GNU GMP/mpfrcpp backend
  • lots of automated testing needed here to ensure that the math isn't messed up. Maybe a clang refactoring tool could do some of the transformations. Not sure.

Iterated Dynamics 4.0

  • replace homebrew formula parser with one based on Boost.Spirit
  • recast existing fractal types as C++ algorithms operating on std::complex<T> to enable arbitrary precision on them
  • recast existing fractal types as GPU shaders
Clone this wiki locally