Release Notes: This release fixes a few memory issues that could lead to wrong results or corruption. Binary operators are now available, and the syntax now takes an "everything is an expression" approach. The documentation has been greatly expanded, and several examples are added for tool.compensation, involute gears, floret patterns, continuous curvature pocketing, and trochoidal milling.
Release Notes: This release adds constructs such as repeat() and the ternary operator ?:. The local keyword allows assignment and functions allow passing by reference. The pre/post inc/dec operators can be part of expressions. Strings concat using +. The + and - operators changed undef handling and +| and -| operators were added. Several functions have been added, such as pathmode() to set blending, and fixpos_*() to set/store/restore known positions. The functions to_native() and ismodemm() allow coding across mm/inch systems. Canned cycles were added as library functions.
Release Notes: This release fixes a bug is the execution of the if/elif/else execution, which ignored the final else if all if/elif clauses were false. Smaller fixes include accounting for rounding errors for 180 degree arcs and documentation updates. Head() and tail() functions now allow negative counts to get partial lists without knowing the actual count. The new comment() function allows easier inclusion of gcode comments/debug statements into the compiled code.
Release Notes: This release adds gcode-as-function output to create callable and include-able subroutines. The new built-in function reverse() can be used to change the order of vectors and vectorlists. Fixes include proper unit handling in position() return values, and toolchange() now emits an M6 code to activate the change. The function reference documentation is updated to include return types/values for all built-in functions.
Release Notes: This release adds command-line defines to set up variables from the command line. Documentation has been revamped, and a man page is now available. The syntax and function reference have been rewritten in HTML and include more detailed info. Also, package files are included for RPM and DEB packages and can be built from the tarball. Fixes include correction of relative mode, speed-up in execution using bsearch, and comparisons taking units properly into account.
Release Notes: This release adds multiple backends. The output of gcmc can now be G-code, SVG, and DXF (selectable via command-line options). The rotate_XX() functions now handle vectors and vectorlists. Array indices may be negative to address from the end of a vector/vectorlist. Vectors and vectorlists can be scaled using the scale() function. Query functions are added to detect the current output format from the script. Fixes include tests for potential NULL dereferences and corrected arc radius tests. Windows file handling takes binary/text mode into account when writing files.
Release Notes: This release adds (full) circles to the built-in functions, which arcs cannot provide unambiguously. Bugfixes include changes to long commandline parameters arguments handling, relative arcs coordinate outputs depending on global relative settings, and drilling cycle now updating the global position correctly.
Release Notes: This release implements inch imperial units ("in" suffix) and converts "mil" to inch automatically. The internal handling of the -i option, to output in imperial units, is made consistent throughout so that built-in functions properly handle metric and imperial depending the -i option. Long options are now supported on the command line, and the prologue/epilogue code can be imported from files specified on the command line. Bugfixes include proper handling of break/continue statements to actually work as expected.
Release Notes: This release adds head() and tail() functions to supplement the shift functions and return start/end of vectors and vectorlists. The gcode output can now be in imperial units, though gcmc internally still defaults to mm if no units are explicitly used. Precedence of the modulo operation is brought in line with other languages to be equal to multiply and divide. Default plane selection is fixed to work from the commandline. Prologue and epilogue code is changed to ensure repeatable operation of the generated script, regardless of the previous mill/lathe's gcode-state.
Release Notes: This release implements shift operators << and >> on scalars, vectors, and vector-lists. It operates as usual on scalars, where operation on vectors and vector-lists will shift the contents. This allows easy movement of coordinates in vectors for XYZ, ABC and UVW axis systems. Fixes include proper handling of arcs to output valid IJK coordinates in all cases and correction of the output of XYZ positions. Al slight speed improvement is achieved by caching value structures to reduce malloc/free overhead.