1.0.2 * Implement multithread support using QtConcurrent * Lexer usage is now reentrant * Parser usage is now pure parser * Seperate messages from output and add commandline param to redirect output to file * Implement dark theme preference * Faster STL output using generator for generateTriangles * Use boost mp for number types * Make indents configurable * Implement datum$ module * Add circumcenter function to find the center of three points * Add passive color module * Implement is_undef function * Implemented translate output in export * Faster group implementation * Fix self-intersecting polylines * Add warning when invalid rotation axis given * Added basic assert function and module * Implement an ord function to get unicode ordinals. 1.0.1 * Windows installer is now 64bit * Official builds deployed by continuous integration * Fix several minor memory leaks * Fix crash for cube with undefined size * Fix crash under macosx for degenerate polyhedron test * Fix for sqrt with negative values * Fix crash for asin(2) * Fix crash for isolated points, move sanitize operations to class * Fix crash for empty polyhedron * Fix crash for num with no argument * Fix crash in hull with duplicate points * Modernize the code to use C++14 * Add external CAM launching operation 1.0.0 * Handle byte order marks by ignoring them in the parser * Implemented search/replace widget * Add selected text indent/unindent * Bounds module now also outputs size info * Implement scientific output format preference * Make print bed transparent when viewed from below * Implemented cbrt function * Implement history in console window * Implement highlight current line in code editor * Show tooltips when hovering over builtin module names * Built in modules are now highlighted * Allow configuration of the editor font * Fix for syntax highlighting of illegal unicode charaters * Improve configuration of rounding and precision preferences * Implement exponent notation * Add the ability to specify units on numbers (mm,cm,in,ft) * Basic implementation of concave hull using alpha shapes * Implement nef import * Added is_vec2 and is_vec3 functions * 'boundary' is now an alias for the old 'outline' module * Implemented Text Module using QPainerPath * A crude AMF import implementation * Basic SVG export support. * A crude 3MF import implementation * Add print bed configuration to preferences dialog * Added sweep angle parameter to rotate_extrude. * Modernize the code to use C++11 * Allow print origin to be configured * New print area and base in the style of Mk42 heatbed 0.9.9 * Support compilation with new QT versions * Added documentation generator and updated docs. * Output module description in show builtins. * Embed documentation in all builtin modules that have parameters. * Remove center parameter from sphere. * Added is_mat4x4 function. * Added indexes to children module. * Save line some numbers into syntax tree, which will be used in future. * Allow iteration over text values with for. * Implemented chr function. * Implemented type test functions. * Restore logical and/or operations. * Improve tests for Logical operators. * Added tests for chain_hull() module. * Better memory handling and exception handling. * Add some additional memory cleanup. * Implemented chain_hull() module. * Fix to offset module and added two simple tests. * Fix to tests for range length. * Fix to len() function for range. 0.9.8 * Support for 3mf file format in export. * Choose a sensible location when exporting files. * Fix zero-length edges and zero-area triangles in input STL or polyhedron. * Added $fe variable which calculates fragments based on tolerance. * Correct parameter name for polyhedron "surfaces" -> "faces". * Basic implementation of mesh simplification. * Added more tests for polygon and fix for empty polygon. * Implemented normal$() module to show orthogonals to facets. * Better detection of binary STL. * Basic implementation of children() module. * Let the align function can take a vector. * Allow norm function to be applied to numbers and complex values. * Fix inverse trig functions. * Ang function can now return the axis and angle between two vectors. * Implemented cross function and operator. * Result of undefined binary operation should be undef. * Allow relative positioning by letting primitives have children. * Fix GL viewer, calculate normals with double. * Allow concatentation with undef to yield a result. e.g. a=[]; no longer needed before to make a~=[1,2,3]; work. * Implemented export to nef. * Basic caching of primitives. * Hook the view menu actions up to appropriate views. * Fix weird crash on shutdown. 0.9.7 * Use arbitary precision arithmetic for all calculations. * Prevent toolbar being hidden show actions menu on right click. * Greyscale the rendering window while compilation is taking place. * Use new QOpenGLWidget when Qt5.4 or above is available. * Added discrete module for quantising vertices to the nearest n decimal places. * Added a simple renderer, to render wireframes without cgal. * Experimental multi material support. * Provide backwards compatibility in rotate extrude. * Rotate module now accepts unit quaternion (versor). * Implemented quaternions, multiplication, and ang() function. * Allow nesting of auxilirary modules, and display nested to be displayed. * Implemented exponent operator for vectors. * Implemented length (magnitude) operator. * Implemented vector multiplication and norm() function. * Ranges now support basic interval arithmetic. * Update to Qt5.5.1 on windows build. * Allow diameter parameter on circle. * Removed extraneous new lines in console output. * Added places parameter to round function. * Added a triangulate module. * Fixed a crash in linear_extrude when there are no perimeters. * Preferences default to "Safety orange" theme. * Ensure only modified files are saved and allow do not save for new tabs when closed. * Updated windows build environment. 0.9.6 * All trig functions now take value in degrees. * Ensure cone, prism, cylinder etc use exact centering along vertical axis. * Add option to use rounding within trig, and other functions. * Make output precision configurable in preferences. * Higher output precision in AMF format. * Fix to rotate_extrude bug where r=0. * Added test for bezier surface, solid linear extrude, and slice. * All primitives are now constructed as a list of points and indices to those points. * Corrections to docs where bounds() should be bound$(). * Use exact centering for sphere and default to point when no radius given. * Improve compilation time output in gui. * Fix crash when version() is called more than once. * Added feature matrix to docs. * Functions min() and max() now work for any number of arguments. * Added some i18n support code. 0.9.5 * Implemented importing scripts with the 'use' directive. * Fix some hard crashes in Polygon, Polyhedron and Polyline modules. * Fixed a bug so that the result of the expression !undef now yeilds true. * Implemented a num() function for converting values to number. * Interactive mode can now handle statements as well as expressions. * Implemented a volume$ module for calculating required print material, and optionally center of mass. * Implemented a radial$ module for measuring diameters and radii. * Bounds module is now named "bound$" since it is an auxilary geometry module. * Index over ranges and vectors using Iterator, which improves performance for huge ranges. * Polygon can now take a single list of vectors for the outline. * Added a few simple tests for intersection, difference and union modules. * Fixed problem with undef occasionally being initialised to the wrong type. * Functions now always return undef when the evaluation give no result. * Fixed nested functions. Test moved from non-working and added additional test. * Fixed incorrect clearing of arguments and parameters. * Distribute documentation as part of RapCAD. Available from Help menu. * Allow polygon module to have multiple line vectors. * Added some more tests for polygon, cone, square and circle modules. * Test suite is now integrated with TravisCI continuous integration. * Implemented a comlement module. * Added more tests for rad deg sin cos and tan functions. 0.9.4 * Implemented simple align module. * Fix bug where updating the view gets called twice. * Added interactive mode, for evaluating expressions. * Implemented simple text for displaying numbers in auxilary geometry. * Allow print to be used with no output model. Correct precision in print output. * Added thickness parameter to Slice module. * Added decompose module. Decomposition can be seen with view->show edges. * Initial implementation of auxilary geometry for the bounds module. * Group module now does fast unions on non-intersecting primitives. * Performance improvement for unions. * Correct first parameter name in rotate module "vector"->"angle". * Added a concat() function. * Added export for vrml 2.0 and obj file format. * Polyline Module can now optionally do multiple lines. * Outline now works with holes. * Allow multiple files to be loaded from the commandline. 0.9.3 * Moving forward only Qt5 and above will be supported. * Now using Qt 5.2.0 for windows builds. * Updated to use latest versions of CGAL Boost and dxflib for windows builds. * Updates to documentation for building latest version of boost and CGAL on windows. * Restored icon theme in windows build. * Changes to make rotate_extrude work with radius of 0, and consider size of rotation object when calculating fragments. * Resize module is more accurate, Added test for resize module. 0.9.2 * Disabled some usless ui elements until the features are implemented. * Create a point if a sphere of radius 0 requested. * Fix 'for' with no argument, should not execute child statements. * Zoom distance can no longer be negative, mouse wheel and shift+rmb zoom are more consistent. * Implemented multmatrix module. * Added '.csg' and '.rcad' files to the import statement. * Implemented comparison mode for comparing stl, off, etc. * Workaround bug in CGAL to fix to hard crash caused by an exception thown from the destructor of a CGAL class. * Implemented export of CSG product. (Works but needs improvement) * Fix for arguments in module instances and function invocations, they are now evaluated in new context. * Fix polygon module. Single vectors, and nested vectors can be used for point list. * Fix for index. Should return undef on out of bounds. * Fix match by index. Should only be used when no arguments match by name. * Allow cube to create squares when x=0, or y=0. * Fix text value comparisons. * Added a unit testing framework and lots of unit tests. * Fix index out of bounds error in index operator. * Implemented projection module. * Fixes to allow correct unicode output under Qt4.x * Make version commandline output return 0 exit code. * Fixed a bug where variables are resolved in parent contextual scope rather than lexical scope. * Implemented rad and deg functions for converting to and from radians. * Fixed message. 'rendering time' is the wrong terminology. * Fix error reporting and re-enable buttons on error. * Fix outline module, now closes the gap. * Initial implementation of GCODE generation. Currently reprap.rcam must be in the working directory. * Rotate extrude now implemented and accepts $fn $fs and $fa. * Fixes to linear extrude, seems to be stable (finally). * Added write and writeln modules, echo now emits deprication warning. * Make rotate module do exact rotations with multiples of 90 deg. (i.e. right angles) * Fixed sign() function works with values less than 1.0. * Support compilation against Qt5 * Implemented index operator for Text and Vector Values. 0.9.1 * Apply short-circuit for logical operations. * Fixed compilation USE_CGAL undefined. * Fixed display of human readable rendering time. * Autosize should default to false. * Added ln() and log() functions. * Minor improvement to hull evaluation. * Documentation updates. * Add parameters to modules and added ability to dump builtin modules into ed * Save [as] shortcut Ctrl+[Shift]+S * Added option to auto save when compiling. * Implemented cone module. * Fix for cylinder that can produce a cone when only two unnamed parameters s * Make the tabs closeable. 0.9.0 * Preliminary support for special variables $fn $fs and $fa. * Improve memory management for csg tree nodes. * Implemented a point() module. * Implemented a slice() module. * Improvements for hull module. 0.8.0 * Implemented amf export feature. * Allow range values to be treated as though they are vector values. * Implemented preferences for edge and vertex size. * Added simple about box dialog that displays the RapCAD version number. * Improved the tool tips in main window tool bar. * Improve memory management for values. * Improvements to array concatenation code and some tests. * Fixed some defeferenced null pointer exceptions in polygon. * Documentation Improvements. * Added some more examples * Licensing updated. 0.7.0 * Implemented add assign (+=), and subtract assign (-=) operators. * Added some simple examples. * Implemented center() module for centering about the bounding box. * Fix for cylinder and cube of zero height. * Updated icons. * Added support for non centered spheres * Implemented new functions tanh() sinh() cosh() atan() atan2() acos() asin() exp() pow() ceil() floor() round() min() max() sign() abs() sin() cos() tan(). * Added warning when function cannot be found. 0.6.0 * Allow for additional commas in Vector expressions, but raise a warning. * Fixed implementation of default values for parameters. 0.5.0 * Added support for export via the command line, this removes the -f command line option. * Implemented STL import. * Relaxed the grammar slightly to allow 'for' and 'if' to follow module instances. * Added 'len' function to return the length of a vector or string and an 'str' function for backwards compatibility. * Implemented a polygon module. * Added a version function which returns the rapcad version triplicate as a vector and equality/inequality operator for vectors. * Various bug fixes and documentation improvements. 0.4.0 * Multiple files support. * Dynamic arrays support using the concatinate operator ~ and the append operator ~= * Fixed mouse button assignments so that right mouse button controls pan and zoom, and left mouse button to controls rotation. * Added a resize module which is a more convenient way to scale, it also has an autosize parameter. 0.3.0 * Basic support for importing off files as modules, and support code that will facilitate importing stl's dxf's etc. * Implemented 'outline' module which strokes an outline around a polygon, and a 'cylinder_surface' which creates the sides of a cylinder with no top or bottom. * Added a 'rands' function that returns a vector of random numbers. * Implemented actions to show/hide areas of the GUI. Window position, size visibility, and default viewport is saved across sessions. * Tab name now reflects the loaded file and 'New' button now creates new tabs. * Added application icon and toolbar/menu icons for Windows and Mac OS X. 0.2.0 * Optimisation to 'linear_extrude' module. * Implemented OFF and STL export. * Export to PNG using view screen capture. * Added 'bezier_surface' and 'prism' modules. * New Preferences Dialog, and Preferences which are saved across sessions. * Improved 'for' so that the variables inside are not in a seperate context. * Basic types can be cast to vectors allowing for cube(10) to work. * Better handling when arguments are not supplied to modules. * Renamed 'inset' module as 'offset', must now supply negative values. * Support for file associations. * MacOS X support. * Added first builtin functions 'sqrt' and 'sum'. 0.1.0 * Initial Release