Release Notes for Ch, Ch SDK and Embedded Ch SDK

Version 8.5.0.20041 May 27, 2023 (bundled in C-STEM Studio v7.0.4 or higher)

Version 8.5.0.20041 May 27, 2023 *) updated lienarfit(), expfit(), and quadraticfit() functions in numeric.h with an optional argument for residuals. Version 8.5.0.20041 April 22, 2023 *) DISPLAY(aList) works for ListInt, ListDouble, ListStr for APCSP. Version 8.5.0.20041 April 1, 2023 *) Changed ListNum to ListInt in apcsp.h for APCSP *) Added ListDouble in apcsp.h for APCSP Version 8.5.0.20041 March 30, 2023 *) support the following loop in APCSP through apcsp.h REPEAT2 UNTIL(cond) FOR EACH(item, aList) FOR EACHARRAY(item, a) *) Updated LENGTH() in apcsp.h *) Updated SET_ELEMENT() in apcsp.h Version 8.5.0.20041 March 22, 2023 *) support the repeat loop in APCSP through apcsp.h REPEAT n TIMES Version 8.5.0.20041 February 16, 2023 *) Added permutation() function in numeric.h unsigned long long permutation(unsigned long long n, unsigned long long k); Version 8.5.0.20041 February 10, 2023 *) updated MOVE_FORWARD(), ROTATE_LEFT(), ROTATE_RIGHT(), CAN_MOVE() in apcsp.h Version 8.5.0.20041 December 31, 2022 *) Updated Linux 64bit to support Linux version 4.18.0 and higher Version 8.5.0.20041 December 8, 2022 *) Updated Class ListNum and Class ListStr in apcsp.h. When the index is outside the valid range, an error message will be displayed and the program will terminate. Version 8.5.0.20041 November 27, 2022 *) Updated LENGTH() in apcsp.h Version 8.5.0.20041 November 23, 2022 *) Syntax highlight inputnum(), inputstr(), display(), distriminant() Version 8.5.0.20041 November 14, 2022 *) updated _chrc for Win64 for handling Visual C++ 2022 Version 8.5.0.20041 November 11, 2022 *) Add discriminant() function in numeric.h void discriminant(duble a, double b, double c, double &dis); Version 8.5.0.20041 October 31, 2022 *) Updated functon display() to multiple arguments correctly. Version 8.5.0.20041 October 30, 2022 *) Added new functon display() to display a single value or 1D and 2D arrays of int, double, and string. display(2, 3.5, "string"); A white space is added between the argument. For double data type or constant, "%g" format is used. If the last argument is a string with a newline character '\n", no white space will be added. Version 8.5.0.20041 October 29, 2022 *) updated inputnum() and inputstr() without argument. Version 8.5.0.20041 October 22, 2022 *) Syntax highlight macros used in apcsp.h Version 8.5.0.20041 October 16, 2022 *) updated header file apcsp.h *) added ListNum and ListStr for APCSP *) added CHHOME/demos/APCSP Version 8.5.0.20041 October 15, 2022 *) updated header file apcsp.h and demo program display.ch Version 8.5.0.20041 October 10, 2022 *) Added the support for Visual Studio 2022 Community Edition in _chr Version 8.5.0.20041 October 9, 2022 *) added header file apcsp.h and demo program display.c to support AP Computer Science Principles Version 8.5.0.20041 September 29, 2022 *) updated double xintercept(double x1, double y1, double x2, double y2); *) added the member functions of CPlot class int CPlot::linesi(double x1, double x2, double m, double b); *) Updated WinSCP with v5.21.3 command for Windows. Version 8.5.0.20041 September 4, 2022 *) added the member functions of CPlot class int CPlot::perpendicularLinesi(double x1, double y1, double m, double b); int CPlot::perpendicularLinepts(double x1, double y1, double x2, double y2, double x3, double y3); void CPlot::textLaTeX(string_t string, int just, double x, double y); void legendLaTeX(string_t leg); textLaTeX() and text() are the same for ChIDE for now legendLaTeX() and legend() are the same for ChIDE for now *) added the following math functions in numeric.h int perpendicularLinepts(double x1, double y1, double x2, double y2, double x3, double y3, double &x, double &y); int perpendicularLinesi(double x1, double y1, double m, double b, double &x, double &y); double xintercept(double x1, double y1, double x2, double y2); double yintercept(double x1, double y1, double x2, double y2); Version 8.5.0.20041 August 3, 2022 *) added the member functions of CPlot class int CPlot::lineps(double x1, double x2, double x, double y, double m); int CPlot::arrowps(double x1, double x2, double x, double y, double m); int CPlot::arrowsps(double x1, double x2, double x, double y, double m); *) removed the member functions of CPlot class int CPlot::linelm(double x, double y, double length, double m); int CPlot::arrowlm(double x, double y, double length, double m); int CPlot::arrowslm(double x, double y, double length, double m); int CPlot::pointlm(double x, double y, double length, double m); Version 8.5.0.20041 August 2, 2022 *) added the following math functions (not in numeric.h) double distance3D(double x1, double y1, double z1, double x2, double y2, double z2); void midpoint3D(double x1, double y1, double z1, double x2, double y2, double z2, double &x, double &y, double &z); Version 8.5.0.20041 July 31, 2022 *) added the member functions of CPlot class int CPlot::arrowlm(double x, double y, double length, double m); int CPlot::pointlm(double x, double y, double length, double m); Version 8.5.0.20041 July 30, 2022 *) added the following math functions (not in numeric.h) double distance(double x1, double y1, double x2, double y2); void midpoint(double x1, double y1, double x2, double y2, double &x, double &y); *) added the member functions of CPlot class int CPlot::arrowslm(double x, double y, double length, double m); Version 8.5.0.20041 July 25, 2022 *) added the following math functions in numeric.h void parabolaFocus(duble a, double b, double c, double &h, double &f); void parabolaDirectrix(duble a, double b, double c, double &p); void parabolaVertex(duble a, double b, double c, double &h, double &k); *) added the member functions of CPlot class int CPlot::exprInv(y0, yf, n, "exprWith_x_and_other_variables") int CPlot::arrowsla(double x, double y, double length, double angle); int CPlot::arrows(double x1, double y1, double x2, double y2, ... /* [char *option] */ ); int CPlot::arrows(double x1, double y1, double z1, double x2, double y2, z2, ... /* [char *option] */ ); Version 8.5.0.20041 July 20, 2022 *) added in numeric.h for calculating (x2, y2) and (x3, y3) for triangles int triangleSAS(double x, double y, double alpha, double s1, double angle, double s2, double x2, double y2, double x3, double y3); int triangleSSS(double x, double y, double alpha, double s1, double s2, double s3, double x2, double y2, double x3, double y3); int triangleASA(double x, double y, double alpha, double angle1, double s, double angle2, double x2, double y2, double x3, double y3); int triangleAAS(double x, double y, double alpha, double angle1, double angle2, double s, double x2, double y2, double x3, double y3); *) added the member functions of CPlot class int CPlot::pointla(double x, double x, double length, double angle); int CPlot::arrayla(double x, double x, double length, double angle); Version 8.5.0.20041 July 10, 2022 *) added in numeric.h for calculating the area of a polygon double polygonarea(array double x[:], array double y[:]); Version 8.5.0.20041 July 8, 2022 *) added the member function of CPlot class int CPlot::linestd(double x1, double x2, double a, double d, double c); to plot a line segment ax+dy=c in the range (x1, x2) Version 8.5.0.20041 June 25, 2022 *) added the member function of CPlot class int CPlot::linelm(double x, double y, double length, double m); to plot a line segment with the starting point (x, y), length, and slope m. *) add in numeric.h with double slope(double x1, double y1, double x2, double y2); Version 8.5.0.20041 February 18, 2022 *) Added -s command line option for Ch Command Shell to display short messege Welcome to Ch Command Shell by SoftIntegration Version 8.5.0.20031 January 20, 2022 *) Fixed ChIDE for reading .chrc start up file. *) add in numeric.h with int iselement(int e, array int a[:]); Version 8.5.0.20031 November 30, 2021 *) Fixed the plotting issue for MacOSX Monterey Version 8.5.0.20031 October 21, 2021 *) Changed ChIDE.abbre file for tracklength to trackwidth for one of the arguments for member functions robot.turn*(). Version 8.5.0.20031 September 25, 2021 *) update six bar mechanisms demos sixbarS1/sixStev1.ch sixbarW1/sixWatt1.ch fourbarslider/barslider.ch *) update ch.vim for Vim in Windows /config/vim/vim73/indent/ch.vim *) updated commands below for Windows pscp.exe psftp.exe putty.exe puttygen.exe Version 8.5.0.20031 August 6, 2021 *) Linux Add option -q for Ch -q suppress printing the version number in command shell *) libchplot.dl updated for canvas terminal in Linux 64-bit to remove the option for "Ch". *) *) update the member function rectangle of CPlot class so that it will display properly for large rectangle, outside the xy-coordinate Version 8.5.0.20001 November 22, 2020 *) added the function randfrac() in numeric.h double randfrac(int &num, int den); *) Added the abbreviation for randfrac *) Updated CStevSixbarI.chf and CWattSixbarII.chf for Ch Mechanism Version 8.5.0.20001 October 24, 2020 *) Handle Linux for Chromebook 1) updated chrc to handle libgd 2) updated installation script to install gnome-terminal if not existing 3) updated to keep ch license file if existing ch license found in linux during the ch installation 4) updated Ch.desktop ChIDE.desktop to have correct icon displayed 5) ChIDEUser.properties updated to change position.width from 856 to 1065 to display Run and Stop button in ChIDE 6) install.sh updated to add symbolic link for /opt/ch/, in the future, /opt/ch will CHHOME by default to be consistent for both Mac and Linux, 7) ChIDE.desktop updated to avoid %F displayed when launching ChIDE Version 8.5.0.20001 October 9, 2020 (bundled in C-STEM Studio v7.0.4 or higher) *) added Ch Control System Toolkit for Windows and MacOS *) ChIDE file browser is closed by default. *) remove echo commands inside CPlot.chf Version 8.5.0.20001 August 23, 2020 (bundled in C-STEM Studio v7.0.3 or higher) *) Updated ChIDE for handling files without file extension. It will not changed a file without file extension invoked by the command chide file. When an edited new file without file extension, it will ask to add file extension .ch Version 8.5.0.20001 August 8, 2020 (bundled in C-STEM Studio v7.0.2 or higher) *) Fixed a bug related to grd(), cdivisor(), and cdivisornum() in numeric.h *) added in numeric.h the following function array int multiples(int num, ... /* int m */)[:]; to calculate 10 or m multiples of num. Will phase out multiple() function. Version 8.5.0.20001 July 13, 2020 (bundled in C-STEM Studio v7.0 or higher) *) Fixed Mac for running robot.playMelody() *) Fixed Windows for Windows for missing VS12 runtime lib *) Fixed for ChIDE for saving chrc, chsrc, _chrc, _chsrc without additing file extension .ch. Version 8.5.0.20001 May 10, 2020 (bundled in C-STEM Studio v7.0 or higher) *) By default, ChIDE can open up to five files on the buffer. If a new file is open, the oldest file in the buffer will be closed. *) In ChIDE, when a user does not specify a default file name extension when a file is saved. Save it as a .ch file. *) When ChIDE killed, it kills the processes for Ch started so that in Raspberry Pi, wiringPi can be still accessed by the new Ch program *) Added ChIDE->Help->Activate Ch License to activate a Ch License. *) Even if the Ch license has expired, ChIDE can still be launched. *) MacOSX: fixed the copy/paste bug *) MacOSX: launch .ch programs in ChIDe from a file brower. *) MacOSX: click and drag files to ChIDE like in Windows. *) MacOSX: Open and save file in ChIDE using Mac file folder convention. *) MacOSX: Support native MacOSX shortcut command for copy/paste, etc. Command-X: Cut the selected item and copy it to the Clipboard. Command-C: Copy the selected item to the Clipboard. Command-V: Paste the contents of the Clipboard into the current document or app. Command-Z: Undo the previous command. Command-A: Select All items. *) Added the member functions of CPlot class below int CPlot::table(double x, double y, double width, double height, int row, int column); int CPlot::tableArray(double x, double y, array double row[:], array double column[:]); Version 8.1.0.20001 January 19, 2020 (bundled in C-STEM Studio v6.5 or higher) Version 8.0.0.15421 January 19, 2020 for Windows (bundled in C-STEM Studio v6.5 or higher) *) Support the latest MacOSX v10.15.x *) Can launch Ch programs in MacOSX file browser directly and opened in ChIDE. *) Added the member functions of CPlot class below string_t CPlot::getStrokeColor(void); int CPlot::getStrokeWidth(void); *) Added the member functions of CPlot class below void CPlot::ticsFraction(fraction); to set the fractions on tic marks. *) Updated the member functions of CPlot class below to allow change their color and width by strokeColor() and strokeWithd(). By default, the color is red and width is 2. void rectangularPrism(double x,double y,double z,double length,double width,double height); void triangularPrism(double x,double y,double z, double length,double width,double height); void rectangularPyramid(double x,double y,double z, double length,double width,double height); *) Fixed the known issue to remove the z-axis for 3D plot by the member function void CPlot::removeCoord(); Version 8.0.0.15421 January 7, 2020 (bundled in C-STEM Studio v6.3.5 or higher) *) added math function linsolvesistd() for solving a system of two linear equations in slope-intercept and standard form. *) Updated the member function of CPlot class below plot.sizeRatio(1) to make z-y-z axes with the same scale for 3D plot using xyz Cartesian coordinates. *) Updated the member functions of CPlot class below so that z-y-z axes with the same scale. void rectangularPrism(double x,double y,double z,double length,double width,double height); void triangularPrism(double x,double y,double z, double length,double width,double height); void rectangularPyramid(double x,double y,double z, double length,double width,double height); Known bug: If calling plot.point() in 3D space, it needs to be called before the above member functions are called. *) Added the member functions of CPlot class below void CPlot::coneUpsideDown(void); void CPlot::ticsOnAxis(); void CPlot::axisArrow(double xaxisloc, double yaxisloc); void CPlot::removeCoord(); Known issue: for 3D plot, the z-axis is to be removed. *) Changed the member functions of CPlot class below void CPlot::cylinder(double radius,double height); void CPlot::cone(double radius,double height); void CPlot::sphere(double radius); to void CPlot::cylinder(double x, double y, double z, double radius, double height); void CPlot::cone(double x, double y, double z, double radius, double height); Known issue: x and y are ignored. void CPlot::sphere(double x, double y, double z, double radius); Known issue: x and y are ignored. void CPlot::sphere(double radius); Version 8.0.0.15421 September 22, 2019 (bundled in C-STEM Studio v6.2.7) *) added in numeric.h the following function array int multiple(int num, ... /* int m */)[:]; to calculate 10 or m multiples of num. *) Change int gcd(int num1, int num2); to int gcd(int num1, int num2, ...); to calculate the greatest common divisor of multiple integers. *) Change array int cdivisor(int num1, int num2)[:]; to array int cdivisor(int num1, int num2, ...)[:]; to calculate the common divisors of multiple integers. *) Change int cdivisornum(int num1, int num2); to int cdivisornum(int num1, int num2, ...); to calculate the number of common divisors of multiple integers. *) Updated chref.pdf. Version 8.0.0.15421 September 8, 2019 (bundled in C-STEM Studio v6.2.6) *) Change int lcm(int num1, int num2); to int lcm(int num1, ...); to calculate the least common multiple of multiple integers. Updated chref.pdf accordingly. Version 8.0.0.15421 August 26, 2019 (bundled in C-STEM Studio v6.2.2) *) Updated the member functions of CPlot class void numberLineMult(int m, int n); void numberLineDiv(int a, int b); Version 8.0.0.15421 August 26, 2019 (bundled in C-STEM Studio v6.2.1) *) Added the function int gcf(int a, int b); Version 8.0.0.15421 August 13, 2019 (bundled in C-STEM Studio v6.2) *) Added the followinng abbreviation randint randdouble *) Added the member functions of CPlot class below for division on a number line void numberLineDiv(int a, int b); Version 8.0.0.15421 August 8, 2019 (bundled in C-STEM Studio v6.1.1) *) Added the followinng abbreviation inr=#include <robot.h>\n| robot.h=#include <robot.h>\n| wiringpi.h=#include <wiringPi.h>\n| *) Added the member functions of CPlot class below for multiplication on a number line void numberLineMult(int m, int n); Version 8.0.0.15421 July 30, 2019 (bundled in C-STEM Studio v6.1) *) Added the member functions of CPlot class below to plot solids void sphere(double radius); void cone(double radius,double height); void cylinder(double radius,double height); void rectangularPrism(double x,double y,double z,double length,double width,double height); void triangularPrism(double x,double y,double z, double length,double width,double height); void rectangularPyramid(double x,double y,double z, double length,double width,double height); *) added in numeric.h for printing five-elementary summary for quartiles in array x int pquartiles(array double x[:]) Version 8.0.0.15421 May 31, 2019 *) added map() in numeric.h Version 8.0.0.15421 April 14, 2018 *) Change the default font size for ChIDE from 10 to 12 *) Change the default buffer size for ChIDE from 10 to 5 Version 8.0.0.15421 March 29, 2018 *) Added the Ch Activation program for Mac OS X Version 8.0.0.15421 January 7, 2018 *) Added the syntax highlighting in ChIDE for Arduino files with file extension .ino Version 8.0.0.15421 November 19, 2017 *) Added the member functions of CPlot class below to plot triangles int triangleAAS(double x, double y, double alpha, double angle1, double angle2, double s); Version 8.0.0.15421 October 28, 2017 *) Added the member functions of CPlot class below to plot triangles int triangleSAS(double x, double y, double alpha, double s1, double angle, double s2); int triangleSSS(double x, double y, double alpha, double s1, double s2, double s3); int triangleASA(double x, double y, double alpha, double angle1, double s, double angle2); Version 8.0.0.15421 October 7, 2017 *) updated _chrc for Win64 to use VC++ 2017 *) added the member function of CPlot class int CPlot::linela(double x, double y, double length, double angle); to plot a line segment with the starting point (x, y), length, and phase angle. Version 8.0.0.15421 September 28, 2017 *) Fixed a bug for the member function of CPlot class int CPlot::ellipseArc(double x, double y, double width, double height, double angle, double startAngle, double endAngle); to use angles in the unit of degrees instead of radian. Version 8.0.0.15421 September 19, 2017 *) updated _chrc configuration file for Win64 to handle Visual Studio 2015 .Net 2017 Version 8.0.0.15421 September 9, 2017 *) added the member function of CPlot class void CPlot::bezier(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3); to plot a cubic Bezier curve with four points, P0 and P3 are two end points. P1 and P2 are control points. *) added the member function of CPlot class void bezierQuadratic(double x0, double y0, double x1, double y1, double x2, double y2); to plot a quadratic Bezier curve with three points, P0 and P2 are two end points. P1 is the control point. *) added the member function of CPlot class int CPlot::ellipseArc(double x, double y, double width, double height, double angle, double startAngle, double endAngle); to plot an ellipse arc oriented with an angle, with specified starting angle and ending angle. *) updated the member function CPlot::rectangle() with an optional argument r. int CPlot::rectangle(double 0, double y, double width, double height, ... /* double r */); the optional argument r is for the control point of a quadratic Bezier curve to make the four corner of the rectangle rounded smoothly. It acts like a radiu of the rounded corner. Version 8.0.0.15421 June 26, 2017 *) added the syntax highlighting for wiringPi setup functions wiringPiSetup() wiringPiSetupGpio() wiringPiSetupPhys() wiringPiSetupSys() Version 8.0.0.15421 June 6, 2017 *) updated stdlib.h so that randint() and randdouble() can be used in Ch Command Shell. Version 8.0.0.15421 March 4, 2017 *) By default, the following global variables in wiringPi.h in Raspberry Pi will not be displayed in debug mode in ChIDE. const char *piModelNames [16] ; const char *piRevisionNames [16] ; const char *piMakerNames [16] ; const int piMemorySize [ 8] ; They will be displayed if the option "ChIDE->Debug->Display special variablesindebug page for Locals and Variables" is checked. Version 8.0.0.15421 March 4, 2017 *) By default, the following global variables in wiringPi.h in Raspberry Pi will not be displayed in debug mode in ChIDE. const char *piModelNames [16] ; const char *piRevisionNames [16] ; const char *piMakerNames [16] ; const int piMemorySize [ 8] ; They will be displayed if the option "ChIDE->Debug->Display special variablesindebug page for Locals and Variables" is checked. Version 8.0.0.15421 March 2, 2017 *) Fixed broken headers files in Windows complex new iostream wait strings.h *) Added the global abbreviation for member functions in chplot.h point for plot.point(x, y); *) Added the global abbreviation for member functions in linkbot.h, mindstorms.h, cpsbot.h driveDistance for robot.driveDistance(distance, radius); *) updated CHHOME/chide/ChIDE.abbrev Version 8.0.0.15421 February 27, 2017 *) Added the global abbreviation 'inp' for #include <chplot.h> in ChIDE *) Added the global abbreviation 'inl' for #include <linkbot.h> in ChIDE *) Added the global abbreviation 'linkbot.h' for #include <linkbot.h> in ChIDE *) Updated the user abbreviation 'hw' in ChIDE Version 8.0.0.15421 February 11, 2017 *) fixed the macros with division of decimal numbers of integers such as #define A (3.0/4903.0) *) fixed the declaration of global variables in Linux and Raspberry Pi. Version 8.0.0.15411 January 23, 2017 *) fixed the bug for the function mode() with the variable freq in numeric.h Version 8.0.0.15411 November 24, 2016 *) added Ch CGI Toolkit for Linux, Linux 64 bit, and ARM *) added Ch Control System Toolkit for ARM (Raspberry Pi) *) added Ch Mechanism Toolkit for all platforms *) added the feature to chplot.h with the member function int CPlot::star(double x, double y, double length, double angle); plot.star(3, 4, 5, 30); plots a star at (3, 4) with the point-to-point edge length 5, roated about the center of the star for 30 degres. *) added the feature to chplot.h with the member function int CPlot::inequal(string_t relop, double value, ... /* string_t color */); plot.inequal("!=3") with an open circle for "!=" at x=3. int CPlot::inequalAnd(string_t relop1, double value1, string_t relop2, double value2), plot.inequalAnd("!=3", ">=2") with an open circle for "!=3" at x=3. Version 7.5.3.15401 September 20, 2016 *) added functions double angle2distance(double radius, double angle); double distance2angle(double radius, double distance); Version 7.5.3.15401 July 4, 2016 *) Updated void CPlot::dot(int x[:], ... /* int n */); so that plot.strokeColor() can be used to change the color of dot plot. *) Added the function int gcf(int a, int b); for obtaining the greatest common factor, the same as greatest common divisor gcd(). *) If plot.noStrokeColor() is called, plot.fillCurve() will not add a curve. *) Update the configuration file _chrc for Win64 for handling Visual Studio C++ 2015. Version 7.5.3.15401 June 6, 2016 *) Syntax highlight note_t for music note structure note_t. *) Syntax highlight I for complex number. Version 7.5.3.15401 April 5, 2016 *) Updated the plotting member function CPlot::boxAndWisker(). The tick marks will be integers for a box-and-wisker plot. The plot displays min, Q1, Q2, Q3, and max. *) fixed the bug for the numeric function quartiles() for the first argument of not the variable 'x'. Version 7.5.3.15401 March 20, 2016 *) The Indent command in ChIDE can handle files with space. Version 7.5.3.15401 March 9, 2016 *) Change the function read() as a regular function so that read() can be used as a member function for Arduino servo control. *) Added _read() as a generic function. Version 7.5.3.15391 February 21, 2016 *) Fixed 'man' command in Ch Command Shell. Version 7.5.3.15391 January 24, 2016 *) Fixed bug for LONG_MAX, LONG_MIN, and ULONG_MAX for Mac 64 bit and Linux 64 bit to treat them as a long long or unsigned long long integers. *) Ch Reference Guide chref.pdf updated. *) Added to numeric.h with the function integralp1() for integration of a fucntion with parameters. extern double integralp1(double (*func)(double x, void *param), double x1, double x2, void *param, ... /* double tol */); *) Added to numeric.h with the function rotatepoint() void rotatepoint(double &x2, double &y2, double x1], double y1, double x, double y, double angle); to rotate a polygon about the point (x, y) by an angle Version 7.5.3.15391 January 21, 2016 *) added to chplot.h with the member function int CPlot::regularPolygon(double x, double y, int n, double length, double angle); to plot a regular polygon. *) updatd CPlot::circleOpen() and CPlot::circleClosed() for handling color. If plot.strokeColor() has been called, plot.circleOpen(x, y) and plot.circleClosed(x, y) will use the color set by strokeColor(). *) Added macros S_ISDIR() and S_ISREG() for stat.h in Windows. *) added in numeric.h the following functions void regularpolygon(array double px[:], array double py[:], double x, double y, int n, double length, double angle); to create a regular polygon with side n and length and rotated by an angle. void rotatepolygon(array double px2[:], array double py2[:], array double px1[:], array double py1[:], double x, double y, double angle); to rotate a polygon about the point (x, y) by an angle array double rotmatrix(double angle) [2][2]; as a rotation matrix. array int factor(int num)[:]; to calculate prime factors of num. int factornum(int num); to calculate the number of prime factors of num. array int divisor(int num)[:]; to calculate divisors of num. int divisornum(int num); to calculate the number of divisors of num. array int cdivisor(int num1, num2)[:]; to calculate common divisors of num1 and num2. int cdivisornum(int num1, num2); to calculate the number of common divisors of num1 and num2. int gcd(int num1, int num2); int gcd(int num1, int num2); to calculate the greatest common divisor of num1 and num2. int lcm(int num1, int num2); to calculate the least common multiple of num1 and num2. *) Changed following functions from gcd() and lcm() to gcdarray() and lcmarray() in numeric.h. int gcdarray(array int &u, array int &v, array int &g, ... /* array int c[&], array int d[&] */); int lcmarray(array int &g, array int &u, array int &v); Version 7.5.2.15381 January 10, 2016 *) added CPlot::exprPoint(double x0, double xf, int n, string_t exprx) to plot n points using an expression. strokeColor(), strokeWidth(), pointStyle() are appliable to plotting points. *) added CPlot::func2DPoint(double x0, double xf, int n, double func(double)) to plot n points using a function. strokeColor(), strokeWidth(), pointStyle() are appliable to plotting points. Version 7.5.2.15381 January 8, 2016 *) added to chplot.h with the member function void CPlot::textColor(string_t color); to change the color of text. The size of text can be changed by plot.fontScale(). plot.strokeColor() and plot.strokeWidth() will affect lines and points only, not on text anymore. Version 7.5.2.15381 January 4, 2016 *) added to chplot.h with the member functions int CPlot::inequal(string_t relop, double value, ... /* string_t color */); draw an inequality on x-axis on the number line with a closed or open circle at the value. The relational operator "relop" is "<", "<=", "==", ">=", and ">". plot.inequal("<", 2) for x<2; int CPlot::inequalAnd(string_t relop1, double value1, string_t relop2, double value2 ... /* string_t color */); draw a line between value1 and value 2 with closed or open circle at both values. plot.inequal(">", 2, "<=", 3) for x<2 AND x<=3; int CPlot::inequalOffset(); to enable the y-offset for multiple inequalities on the number line. void CPlot::fillCurve(string_t option, string_t color); Change the previously added line and curve with the filled color based on the boundary specified in the "option" plot.fillCurve("y1=10", "blue"); The member function must be called before a curve is added. This function is added to replace plot.plotType(PLOT_PLOTTYPE_FILLEDCURVES, num, "y1=10", "blue"); void CPlot::lineStyle(string_t style); change the line style for lines and curves, not able to change the line type for objects. plot.lineStyle(".") for dotted line plot.lineStyle("-") for solid line plot.lineStyle("--") for dash line (not supported in this release) plot.lineStyle(".-") for dot-dash line (not supported in this release) plot.lineStyle("..-") for dot-dot-dash line (not supported in this release) void CPlot::pointStyle(string_t style); change the point style for points. plot.pointStyle(".") point plot.pointStyle("+") plus sign plot.pointStyle("x") cross plot.pointStyle("*") asterisk plot.pointStyle("s") square plot.pointStyle("sf") filled square plot.pointStyle("o") circle plot.pointStyle("of") filled circle plot.pointStyle("^") upward-pointing triangle plot.pointStyle("^f") filled upward-pointing triangle plot.pointStyle("v") downward-pointing triangle plot.pointStyle("vf") filled downward-pointing triangle plot.pointStyle("d") diamond plot.pointStyle("df") filled diamond the pointStyle() can be applied to point(), scatter(), and scattern() plots. void CPlot::legend(string_t legend); void CPlot::legend(string_t legend, ...); plot.legend("line1", "line2", "line3"); is the same as plot.legend("line1"); plot.legend("line2"); plot.legend("line3"); It adds a legend to each curve. Unlike plot.legend(legend, num), 'num' is not needed. *) The plotting member functions strokeColor() and strokeWidth() can be applied to not only point(), but also to scatter() and scattern() plots. *) The default color for lines and points in dislay in Windows for plotting class CPlot are cycled with colors:. red, green, blue, magenta, cyan, yellow, black, orange, and grey. Version 7.5.1.15371 November 23, 2015 *) fixed ChIDE to run in Mac OS X v10.11.1 *) added the following function to numeric.h extern double constrain(double x, double a, double b); Version 7.5.1.15361 November 1, 2015 *) fixed the axis range issue for programs using plot.text() and plotting data for programs such as twojobs.ch. Version 7.5.1.15361 October 20, 2015 *) fixed the floating license bug. Version 7.5.1.15351 October 17, 2015 *) Fixed running Ch in the latest Mac OS X EI Capitan *) fixed CPlot.arcSegment() to be consistent with RoboBlockly so that when endAgle-startAngle is larger than 180 deg, it will have bigger segment. Version 7.5.1.15351 October 11, 2015 *) added to chplot.h with the member function int CPlot::arcSegment(double x_center, double y_center, double r, double startAngle, double endAngle); int CPlot::arcSegment(double x_center, double y_center, double r, double startAngle, double endAngle, string_t color); to drawn an arc segment in CPlot class; The color is used to fill the triangle part of the arc sector. By default, it is filled with the background color. *) The size and color of plot.point() can be changed by plot.strokeWidth() and strokeColor(). By default, the color of a point is red. *) The size and color of plot.text() can be changed by plot.strokeWidth() and strokeColor(). By default, the color of a text is black. *) plot.noStrokeColor() applies only to the outline of an object. It has no effect on the color of the plot.point() and plot.text(). Version 7.5.1.15351 October 5, 2015 *) added to chplot.h with the member function int CPlot::arcSector(double x_center, double y_center, double r, double startAngle, double endAngle); to drawn an arc sector in CPlot class; *) Modified the member function int CPlot::ellipse(double x, double y, double width, double height, double angle); with the 5th argument for an agnle with respect to the x-axis to draw an ellipse in CPlot class; *) The circle, arcSector, arcSegment, ellipse, rectangle, polygon, triangle, quad are objects. They cannot be assessible by data set number to change the color, line width, and legend. The outline can be changed by strokeColor(), strokeWidth(). The inside of these objects can be filled with color by fillColor() or pattern by fillPattern(). *) These member functions for CPlot class are fully implemented. void CPlot::strokeColor(string_t color); void CPlot::noStrokeColor(); void CPlot::strokeWidth(int width); void CPlot::fillColor(string_t color); void CPlot::fillPattern(int patternnum); void CPlot::noFill(); plot.fillColor() applies to the objects only. strokeColor() and strokeWidth() are applied to all lines, include outline ofobjects. noStrokeColor() will remove the outline of objects. But, it cannot remove the line of line and arc. When strokeColor(), strokeWidth(), fillColor() are called. They will apply to all lines subsequently used, unless functions noStrokeColor(), strokeWidth(), noFill() are called to change them. *) The member function plot.fillStyle() is obsolete. Use plot.fillColor() plot.fillPatten() plot.noFill() *) The point has the "cyan" color by default. The point size can be changed by plot.strokeWidth(). The point color can be changed by plot.fillColor(). Version 7.5.15341 September 18, 2015 *) added the following functions to numeric.h extern string_t rgb2hex(int r, int g, int b); to convert a color in RGB values to a color in a hexadecimal number. extern string_t randcolor(); to obtain a random color. extern int isprime(int n); to test if the input number n is a prime number. *) added to chplot.h with the member function void CPlot::backgroundColor(string_t color); to change the default white background to other color. *) These member functions for CPlot class are added as a placeholder. They are still to be fully implemented. void CPlot::strokeColor(string_t color); void CPlot::noStrokeColor(); void CPlot::strokeWidth(int width); void CPlot::fillColor(string_t color); void CPlot::noFillColor(); Version 7.5.15341 September 12, 2015 *) added to chplot.h with the member function int CPLot::arc(double x_center, double y_center, double r, double startAngle, double endAngle); to drawn an arc in CPlot class; int CPLot::ellipse(double h, double k, double a, double b); to draw an ellipse in CPlot class; *) At the end of installation of Ch Professional Evaluation Edition, it gives a message about 40 day expiration of evaluation edition. Version 7.5.15341 September 5, 2015 *) updated Ch in Windows to support 8192 byte for PATH environment *) updated ch professional in Windows for the smooth un-installation Version 7.5.15341 August 23, 2015 *) updated Ch Reference Guide chref.pdf *) updated numeric.h for solving for m and b in y=mx+b using linear regression with the passed residual errors. int linearfit(double &m, double &b, array double x[:], array double y[:], array double r[:]); *) updated numeric.h for a quadratic fit in the form of y = a*x^2 + b*x + c with the passed residual errors. int quadraticfit(array double x[:], array double y[:], double &a, double &b, double &c, array double r[:]); *) updated numeric.h for an exponential fit in the form of y = a*(b^x). with the passed residual errors. int expfit(array double x[:], array double y[:], double &a, double &b, array double r[:]); *) Phased out these plotting memebr functions void CPlot::linearfitResidual(double x[:], double y[:], double m, double b, ... /* int n */); void CPlot::quadraticfitResidual(double x[:], double y[:], double a, double b, double c, ... /* int n */); void CPlot::expfitfitResidual(double x[:], double y[:], double a, double b, ... /* int n */); to plot residuals for linear, quadratic, and exponential fittings. *) added in numeric.h for calculating the data for Box-and-Whisker plot data int quartiles(array double x[:], double &min, double &q1, double &med, Version 7.5.15331 August 16, 2015 *) updated inputnum(). Version 7.5.15331 August 8, 2015 *) Changed the operator loading for "+" with a string type. string_t + string_t, string_t + "str", "str" + string_t, "str"+ "str", *) string_t can be used to cast an expressions into a string string_t s = string_t(12.34); int i = 2; "legend" + string_t(i) becomes "legend 2" Version 7.5.15321 July 21, 2015 *) Fixed installation of Ch in Windows. Ch can installed in any folder, in addition to the default C:/Ch Version 7.5.15321 July 18, 2015 *) Updated randint(a, b) and randdouble(a, b); If a is larger than b, the function will also generate a random number between a and b. *) Changed the default number of ChIDE buffers from 20 to 10. Version 7.5.15321 July 8, 2015 *) Extended the Roam License for 21 days for floating licenses. *) Fixed the file association for .qnm for QuickAnimate *) Fixed QuickAnimate for Windows *) Fixed installation issue for Mac OS X. Version 7.5.15311 July 3, 2015 *) added CPLot::enhanceTextOff() in chplot.h <=, >=, and M_PI as le, ge, and pi symobols in math. *) updated CPlot class for strings in title, legend, text, label to handle <=, >=, and M_PI as le, ge, and pi symobols in math. *) updated plot.numberLine() for multiple calls. Version 7.1.0 build 15301 June 8, 2015 *) updated scatter plot related code for Mac. *) removed the function file printf.chf() so that Printf() will give a clear error message. *) fixed the bug for the function mode() in numeric.h Version 7.1.0 build 15301 May 13, 2015 *) added delayMicroseconds(unsigned int msecs) in unistd.h *) updated CHHOME/include/ch/signal.h in Mac for debugging Ch Arduino programs. Version 7.1.0 build 15301 May 11, 2015 *) updated CPlot::numberLine() to add an arrow for each segment. *) removed CPlot::exprx() to still use CPlot::expr(). Version 7.1.0 build 15301 May 9, 2015 *) temporarily fixed the array of class for a group of robots *) updated ChIDE to suppress displaying the functions by default in debug mode in ChIDE. Useful for debugging mode of Ch Arduino *) updated windows.h for running Ch Arduino code in debug mode without displaying function calls for windows initialization. *) added the function delay() and delaySeconds() in unistd.h with void delay(unsigned int msecs); void delaySeconds(double secs); *) updated CPlot::expr(x0, xf, n, "exprWith_x_and_other_variables") CPlot::exprxy(x0, xf, nx, y0, yf, ny, "exprWith_x_and_y_and_other_variables") to accept gloabl variables inside the expression. Version 7.1.0 build 15291 April 25, 2015 *) For functions in chplot.h, the following functions are updated with an optional argument for color. void scattern(double x[], double y[], int n, ... /* string_t color */); void scatter(double x[:], double y[:], ... /* string_t color */); void numberLineScatter(double x[:], ... /* string_t color */); void numberLineScattern(double x[], int n, ... /* string_t color */); Version 7.1.0 build 15291 April 4, 2015 *) added plot.mathCoord() as default for plotting *) no plot.grid(PLOT_OFF) is needed when values are displayed for bar and histogram graphs. Version 7.1.0 build 15291 April 1, 2015 *) Updated numberLineScattern(x, n) so that n is 0 will not crash. Version 7.1.0 build 15291 March 28, 2015 *) Changed the default line width for the plotting CPlot class to 2. *) fixed the bug for declaring an array of class in 64-bit machine with interface to C++ such as CClassName a[2]; Version 7.1.0 build 15281 March 17, 2015 *) added functions in chplot.h void line1D(double x1, double x2, ... /* string_t color */); to draw a line between x1 and x2 on x-axis for displaying inequalities on the number line. void line1DOffset(void); to enable the y-offset for multiple lines on the number line. *) For functions in chplot.h void numberLine(double x1, double x2, ... /* double x3, ... */); void numberLineScatter(double x[:], ... /* int n*/); void numberLineScattern(double x[], int n); to share the color sequence. Version 7.1.0 build 15281 March 15, 2015 *) fixed roots() in numeric.h roots(array complex z[:], array double p[:]); for solving complex roots. *) include <math.h> in chplot.h for plot.expr() using deg2rad(), cbrt(), etc. *) added in chplot.h void circleClosed(double x, double y, ... /* string_t color */); void circleOpen(double x, double y, ... /* string_t color */); to draw a closed cirlce and open circle for inequality and piecewise functions . *) added in chplot.h void numberLine(double x1, double x2, ... /* string_t color */); and void numberLineScatter(double x[:], ... /* int n*/); void numberLineScattern(double x[], int n); to plot a number line in solid line and scatter plot, respectively. Version 7.1.0 build 15281 March 8, 2015 *) added in chplot.h void numberLine(double x[], int n); void numberLineScatter(double x[], int n); to plot a number line in solid line and scatter plot, respectively. (NOTE: THESE TWO FUNCTIONS HAVE BEEN CHANGED IN NEWER EDITION) Version 7.1.0 build 15281 March 6, 2015 for Win 32 and 64 bits *) added in chplot.h void scattern(double x[], double y[], int n); to plot a scatter plot with data for arrays or pointers of double type. Version 7.1.0 build 15271 February 22, 2015 *) added in chplot.h for Mac OS X void scattern(double x[], double y[], int n); to plot a scatter plot with data for arrays or pointers of double type. *) Functions files in the folders CHHOME/lib/libc CHHOME/lib/libopt CHHOME/lib/libch CHHOME/lib/libch/numeric are readable only for Ch Professional Edition to avoid accidentably modification in computer labs by different users. Version 7.1.0 build 15271 February 22, 2015 *) fixed printf("%g", a) for array 'a' with NaN values. Version 7.1.0 build 15261 February 22, 2015 *) Make the .chf function files in CHHOME/lib/ subfolder readable only for the users. *) added the function mode() in numeric.h int mode(array int a[:], array int num[:], array int freq[:], array double modeval); It returns the number of modes. It passes back arrays num sorted in ascending order, frequency freq, and modes. *) added the function randintfreq() in numeric.h array int randintfreq(int n, int num)[:]; It returns the frequency for numbers between 1 and n in an array when the 'num' random integers between 1 and n are generated. Version 7.1.0 build 15261 February 21, 2015 *) Added support for Roam License for 14 days for floating licenses. Version 7.1.0 build 15251 February 15, 2015 *) When abort() in a program or Abort is clicked in ChIDE, functions registered by atexit() will be executed. This is an important feature for running Ch Arduino code in debug mode. Version 7.1.0 build 15241 January 5, 2015 *) added the version number of 7.1.0 Beta. Version 7.1.0 build 15231 January 5, 2015 *) added "array" as a built-in computational array type, no need to include array.h *) added "I" as a built-in complex number 0+i for an imaginary number, no need to include complex.h. *) added "M_PI" as a built-in number of pi, no need to include math.h *) added "M_E" as a built-in number of e, no need to include math.h *) added "FILE" as a built-in data type, no need to include stdio.h *) added CPlot::exprxy(x0, xf, nx, y0, yf, ny, expxy); *) added CPlot::exprx(), the same as CPlot::expr(), in consistent with exprxy(). *) Changed ComplexNaN and ComplexInf as double complex number, not float complex number. *) complex(real, imag) will always returns a double complex value, not float complex value. *) updated math.h so that deg2rad(x) can be used inside plot.expr() for trignometry curriculum. *) updated quadratic() in numeric.h to sort the x1 and x2 in ascending order *) updated roots() in numeric.h to sort the roots in ascending order *) updated CHHOME/lib/libch/numeric/*.chf for functions using float complex arguments to work correctly. *) added in numeric.h for solving a nonlinear equation int fzero1(double &x, double (*func)(double x), double x0); int fzero2(double &x, double (*func)(double x), double x1, double x2); *) changed in chplot.h from CPlot::arrow(xend, yend, xbegin, ybegin); to CPlot::arrow(xbegin, ybegin, xend, yend); *) added in chplot.h int CPlot::rectanglexy(double x1, double y1, double x2, double y2); to plot a rectangle. int CPlot::triangle(double x1, double y1, double x2, double y2, double x3, double y3); to plot a triangle. int CPlot::quad(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4); to plot a quadrilateral. void CPlot::dot(int x[:], ... /* int n */); to plot a dot plot. void CPlot::boxAndWhisker(double x[:], ... /* int n */); to plot a Box-and-Whisker plot. void CPlot::barGraph(double x[:], ... /* [int n,] double x1[:], ... */); to plot a bar graph void CPlot::barGraphColor(string_t color1, ... ); to add bar graph colors void CPlot::barGraphCategory(string_t label1, ... ); to add items of the catefory for a bar graph void CPlot::barGraphLegend(string_t legend1, ... ); to add legends for multiple-bar graphs void CPlot::barGraphValue(void); to display bar graph values. void CPlot::histogram(double x[:], double begin, double end, double incr, ... /* int n */); to plot a histogram. void CPlot::histogramColor(string_t color1, ...); to set the histogram colors. void CPlot::scatter(double x[:], double y[:], ... /* int n */); to plot a scatter plot. void CPlot::linearfitResidual(double x[:], double y[:], double m, double b, ... /* int n */); to plot residuals for data points of a linear regression. void CPlot::quadraticfitResidual(double x[:], double y[:], double a, double b, double c, ... /* int n */); to plot residuals for data points of a quadratic fitting. void CPlot::expfitfitResidual(double x[:], double y[:], double a, double b, ... /* int n */); to plot residuals for data points of an exponential fitting. *) added in numeric.h for calculating the data for Box-and-Whisker plot data int quartiles(array double x[:], double &min, double &q1, double &med, double &q3, double &max, double &range, double &iqr); *) added in numeric.h for an exponential fit in the form of y = a*(b^x). int expfit(array double x[:], array double y[:], double &a, double &b); *) added in numeric.h for a quadratic fit in the form of y = a*x^2 + b*x + c int quadraticfit(array double x[:], array double y[:], double &a, double &b, double &c); *) added in numeric.h for a linear correlation coefficient double linearcorrcoef(array double x[:], array double y[:]); *) added in numeric.h for calculating the perimeter of a polygon double polygonperi(array double x[:], array double y[:]); *) updated determinant() and cdeterminant() to work in Mac and other 64-bit machines. Version 7.0.0 build 15231 July 13, 2014 *) Handle the user home directory in ChIDE correctly for some school district owned laptops with special setting using H: or other drive for the user home directory. Version 7.0.0 build 15231 June 20, 2014 *) updated windef.h and basetsd.h to fixed the size of LPARAM, LRESULT, WPARAM for win64 Version 7.0.0 build 15231 April 29, 2014 *) fixed libdirent.dl for dirent.h for readdir(), etc. for Windows 64-bit Version 7.0.0 build 15231 March 29, 2014 *) added in numeric.h for solving for m and b in y=mx+b using linear regression. int linearfit(double &m, double &b, array double x[:], array double y[:]); Version 7.0.0 build 15231 March 22, 2014 *) added CPlot::expr(double x0, double xf, int n, string_t exprx) to plot an expression. *) Allow Ch Professional Evaluation Edition to change font size in ChIDE. *) Change the way HOME is found and set in Ch. Version 7.0.0 build 15221 January 29, 2014 *) updated _chrc to handle Visual Studio 2013 for Windows 64-bit Version 7.0.0 build 15221 January 20, 2014 *) Added input functions inputnum() and inputstr(). *) updated the kernel to obtain the user's home directory consistently for Windows XP in a lab setting. This is important for running RoboSim in Windows XP. Version 7.0.0 build 15211 Septembr 14, 2013 *) updated for Mac OS X with all the previous updated features and fixed bugs. Version 7.0.0 build 15201 August 29, 2013 *) fixed memory leak for strspn() and strtok_r() Version 7.0.0 build 15201 August 24, 2013 *) added math functions linsolvesi() and linsolvestd() for solving a system of two linear equations in slope-intercept and standard forms, respectively. *) Syntax highlighting quadratic(), vertex(), linsolvesi(), linsolvestd(). Version 7.0.0 build 15201 July 25, 2013 *) Fixed sprintf() for printing large double type value with more than 64 digits. Version 7.0.0 build 15201 July 17, 2013 *) Removed nextowardf() for Linux 32 and 64 bits *) updated ChIDE syntax file cpp.properties for syntax highlighting FILE, systemTime() Version 7.0.0 build 15201 July 16, 2013 *) Fixed OpenGL in Windows 32 to use the default dll for fast speed. removed CHHOME/bin/opengl32.dll removed CHHOME/bin/glu32.dll Version 7.0.0 build 15201 July 16, 2013 *) Fixed sprintf() in Mac OS X 64-bit to not use a generic function Version 7.0.0 build 15201 June 17, 2013 *) fixed write() in 64-bit machines updated CHHOME/lib/libc/write.chf CHHOME/demos/lib/libc/unistd/write.c *) Update syntax file cpp.properties for syntax highlighting in ChIDE delay(), radian2degree(), degree2radian() Version 7.0.0 build 15201 May 21, 2013 *) Update syntax file cpp.properties for syntax highlighting CMobotGroup, CLinkbotI, CLinkbotL, CLinkbotIGroup, CLinkbotLGroup, Version 7.0.0 build 15201 April 28, 2013 *) Fixed sprintf() in Linux 64-bit and Windows 64-bit to not use a generic function Version 7.0.0 build 15201 March 31, 2013 *) updated the startup file _chrc for Windows for compilation of using VC++ in Visual Studio 2012. *) updated chide configuration file cpp.properties for CMobot. Version 7.0.0 build 15201 January 23, 2013 *) fixed the memory leak for array double a[10]; a *= 100; /* fixed the leak */ a /= 100; /* fixed the leak */ Version 7.0.0 build 15201 January 13, 2013 *) fixed the memory leak for void f(double x); int func(void (*f)(double x)); func(f); /* fixed the leak */ Version 7.0.0 build 15191 December 8, 2012 *) fixed __LINE__ for files over 32767 lines *) added functions degree2radian() and radian2degree() Version 7.0.0 build 15181 October 24, 2012 *) added the functions radian2degree() and degree2radian() Version 7.0.0 build 15181 October 8, 2012 *) ChIDE in Mac fixed Ch plotting with AquaTerm Version 7.0.0 build 15181 October 1, 2012 *) ChIDE in Mac fixed the ChIDE->Run command for displaying an error message with the yellow color highlighting Version 7.0.0 build 15181 September 20, 2012 *) ChIDE updated to not display a warning message when a new file is loaded during debugging. *) ChIDE in Windows can also launch video files *) ChIDE in Mac OS X does not use X11. *) for ChIDE in Mac OS X When there are error messages from ChIDE->Start, Step, or Next, Run the first error message will be displayed and highlighted. *) CPlot class does not use X11 by default in Mac OS X. *) updated strstr() to fix a memory leak Version 7.0.0 build 15181 September 5, 2012 *) updated ChIDE to have 20 history of directories Version 7.0.0 build 15181 September 3, 2012 *) updated pdf and html documention for Ch v7.0 in Japanese Version 7.0.0 build 15181 August 28, 2012 *) fixed the font size and type for Name and Value in debug pane in ChIDE Version 7.0.0 build 15181 August 27, 2012 *) fixed tooltips for ChIDE in Windows *) fixed the locale for debug menus, Variable->Stack, file directory, and file browser for ChIDE in Windows. Version 7.0.0 build 15181 August 24, 2012 *) for ChIDE in Windows, 1) When there are error messages from ChIDE->Start, Step, or Next, the first error message will be displayed and highlighted. Version 7.0.0 build 15181 August 18, 2012 *) for ChIDE in Windows, 1) When there are error messages from ChIDE->Run, the first error message will be displayed and highlighted. 2) Fixed locale translation for multi-byte languages in ChIDE for Variable->Stack in debug pane. 3) Fixed display of file and directory names inside the File Browser for for multi-byte languages. 4) Fixed the bug when file tabs in ChIDE are cliked multiple times. *) Mac OS X x release is signed with SoftIntegration certificate *) added the function randdouble() with a function prototype in numeric.h double randdouble(double a, double b) returns a random floating-point value x such that a <= x <= b *) Updated urand() in numeric.h for generating uniform 'random' numbers. *) Updated locale translation for Japanese in ChIDE *) Updated locale translation for Spanish in ChIDE *) updated CHHOME/config/_chrc for compilation with bluetooth in Win32 *) fixed the license issue for Embedded Ch in Windows when multiple instances of Ch interpreter invoked by calling Ch_Initialize() multiple times. Version 7.0.0 build 15181 July 12, 2012 *) fixed for scanf() for string_t. Ignore an empty line with return character only for int i; string_t s; scanf("%d", &i); scanf("%s", &s); // ignore the leading character '\n' from the previous user input. *) removed the function key F11 for ChIDE for View->Debug Console Window Version 7.0.0 build 15171 July 11, 2012 *) fixed the command 'activation' for license activation for Win 64-bit Version 7.0.0 build 15171 July 7, 2012 *) installation of Ch for Windows will detect win32 and Win 64 bit machines automatically. *) fixed the incorrect error message for missing ';' i = 90 printf("missing ;\n"); Version 7.0.0 build 15161 July 4, 2012 *) fixed QuickAnimate for win32 and win64 machines Version 7.0.0 build 15161 June 24, 2012 *) change void plot.mathCoord(void); internally to use lineType=1; lineWidth=2; plot.axis(PLOT_AXIS_XY, lineType, lineWidth, "black"); to make the axes more visible. Version 7.0.0 build 15161 June 15, 2012 *) add the shell command showvar to display the variables and their values in Ch prompt. The command stackvar is obsolete and replaced by the command showvar. *) More robust when a program with bugs is executed using the ChIDE->Run command *) Added the operation ==, !=, <, and > for comparison of two strings with one of two operands is the built-in string type string_t, the other operand can be string_t, string literal "someting", pointer to char, pointer to unsigned char. If the contents of the two strings are the same, the operation == gives 1 and the operation != gives 0. Otherwise, the operation == gives 0 and the operation != gives 1. The results of > and < are similar to 1 and -1 from the function strcmp(). The operations > and < compares two strings byte-by-byte, according to the ordering of your machine's character set. The operation s1>s2 gives 1 if the string s1 is greater than the string s2 between the values of the first pair of bytes that differ in the strings being compared. Otherwise, it gives 0. The operation s1<s2 gives 1 if the string s1 is less than the string s2 between the values of the first pair of bytes that differ in the strings being compared. Otherwise, it gives 0. *) fixed "man printf" in Windows Version 7.0.0 build 15151 May 25, 2012 *) updated ChIDE to handle the files with the file extensions below .jpg, .png, .mpg, .avi, .mov, .wmv, .gif, .mp4,.doc, .docx, .xls, .xlsx in the file browser *) fixed the plotting member function CPlot::legendLocation() Version 7.0.0 build 15151 May 20, 2012 *) updated ChIDE to handle the files with the file extensions below .jpg, .png, .mpg, .avi, .mov, .wmv, .gif, .mp4,.doc, .docx, .xls, .xlsx to propperly using an external program in Windows and Mac *) Added the following option under View. Clear Input/Ouput Pane on Execute By default, the Input/Output pane will be cleared before a program is exexuted by the Run/Start/Step/Next command. *) Updated Activatoin program in Windows. *) fixed a crash bug in ChIDE in 64-64 bit machines when the first line of a file without file extension .c, .ch, .h, .cpp is an empty line. *) Removed the following Ch commands in Windows. They are now available in Windows by default. at.exe comp.exe print.exe tree.exe cacls.exe convert.exe diskcomp.exe findstr.exe chcp.exe recover.exe endlocal.exe replace.exe Version 7.0.0 build 15151 March 21, 2012 *) fixed a crash bug in ChIDE for Mac OS X introduced in March 1,, 2012 Version 7.0.0 build 15151 March 1, 2012 *) added the option '-d directory' to display files in 'directory' in the file browser window. chide [-d directory] filenames Version 7.0.0 build 15151 Febuary 27, 2012 *) fixed a bug for crashing when openning a new doc in ChIDE *) added unwrapdeg() for unwrap in degrees in numeric.h Version 7.0.0 build 15151 Febuary 17, 2012 *) added the function itoa() in stdlib.h *) added the function msleep() with void msleep(unsigned int msec); in unistd.h for sleeping msec milliseconds. Version 7.0.0 build 15151 January 15, 2012 *) Added the following new features to make Ch more user friendly for beginners to learn computing and math: *) added the following new features for ChIDE *) optional Debug Console Window for debug. in Linux/Mac when Debug Console Window is toggled, ChIDe needs to restart. It will display the message "ChIDE needs to be restarted for the new settings to take effect." *) modified ChIDEGlobal.properties *) modified locale.properties *) added qnm.properties *) ChIDE can process multiple .qnm files to display in different QuickAnimation Windows. *) Changed the default value for width from position.width=835 to position.width=856 *) Function Key F8 for open or close Input/Output, Debug, Debug Command Panes. *) added *.ch, *.chf, *.cpp to the default file extension for "Find in Files" command *) updated some icons in Debug Bar *) Added two icons for "Find in Files" and "Find Next" in Tool Bar in Windows *) Make the icons in Tool Bar in Unix the same as those in Windows *) doc how to make Function key binding for F9, F10, F11, and F12 *) doc locale.properties Debug a program in a console= Detect and debug a console program automatically with a console= ChIDE needs to be restarted for the new settings to take effect.= for running programs in console. for Ch_AppType()==CH_APPTYPE_CONIO Input to scanf() can use backspace or delete to delete input characters Can run both console applications with conio.h in console or no console applications. *) Start/Step/Next will open Debug Command Pane. *) added Animate menu and related features *) removed the menu "ChIDE Help under the menu "Help" *) When a program includes the header <conio.h>, it will run with a debug command console automatically when run in the debug mode. When run by clicking "Run", it will pop message to suggest the user to click "Start" to run. After the program is executed, the subsequent execution of new programs will follow the default. 1) locale.properties needs to be updated. *) restricted the enlarge of the font size by the command Ctrl+kaypad+ by Ch Eval and Ch Student Editions. *) merged chide.pdf and chide.html into chide.pdf. *) in chide.pdf By default, functional keys F9, F10, F11, and F12 in Mac OS X are pre-binded to certain features. To use these functional keys for ChIDE, you can disable these pre-binding with the following steps: Click the Apple symbol on the upper left corner Click System Preferences Click Keyboard & Mouse Click Keyboard Shortcuts Click to disable the pre-selected bindings for F9, F10, F11, and F12 *) fixed ChIDE, when a C/Ch/C++ script launched by the ChIDE in a command line, such as chide script the "script" code in the editing pane will be syntax highlighted. *) fixed ChIDE, if a file is edited with Line End Characters of CR, the file will be saved with the line end characters of CR + LF before it is executed. *) fixed ChIDE, for extern variables without allocated memory such as extern int e; the variable "e" will be displayed only when the debug option "Display special variables in debug pane for Locals and Variables" is enabled. *) fixed ChiDE. When the members of char arrays of a structure are displayed in debug command pane, no space between each character will be displayed. *) fixed ChIDE, a C/Ch/C++ program with different file extensions can run in ChIDE. Click Language->C/Ch/C++ will change the lanuage to C/Ch/C++ program and make it executable. *) added a File Browser Pane for directory and a field for adding the directory *) icon for different file types in File Browser Pane. .ch, .chf, .chs, .chrc, .chsrc, _chrc, _chsrc .c, .C, .h .cc, .cpp, .cxx, .hh, .hxx .hpp .txt, .dat, .data .tex, .latex .htm, .html .qnm .xml *) added Help->Demo Programs in ChIDE *) fixed display of ChIDE for an output starting with -, +, and ! without changing the color of the output in the output pane. *) fixed ChIDE so that 'connect' will not be syntax highlighted. *) ChIDE will create a default directory HOME/chdemos at the startup. *) fixed different encoding for multi-byte language strings in output pane and debug pane in ChIDE. *) fixed to run a program in ChIDE for the array initialization with an extra comma ',' in the list of initializers such as int a[]= {1, 2, 3, }; *) added capability for Ch and Embedded Ch to use the CHHOME environment variable to find the Ch Home directory for easier installation. *) added the math functions in math.h double rad2deg(double radian); double deg2rad(double degree); long double roundl(long double x)); float roundf(float x)); *) added the following math functions in numeric.h void vertex(duble a, double b, double c, double &x, double &y); int quadratic(duble a, double b, double c, double &x1, double &x2); int cquadratic(duble a, double b, double c, double complex &z1, double complex &z2); int randint(int a, int b) returns a random integer n such that a <= n <= b array double linrange(double first, double last, int n)[:]; returns a column vector linearly spaced between and including a and b first and last array double logrange(double first, double last, int n)[:]; returns a column vector logarithmically spaced between and including first and last *) Added following plotting features: *) Use new interface for displaying plots *) added CPlot::plotType(PLOT_PLOTTYPE_DOTS, num, dot_type); *) added CPlot::font(char *fontname, int fontsize); *) added CPlot::fontScale(doule scale); *) updated plotting with better display and GUI interface on the plot. *) updated CPlot::polarPlot() to make it easy to use for plotting for polar coordinates. *) added CPlot::fillStyle() for fill styles for filling a box or filled curve. Support transparent solid and transparent pattern. *) phased out CPlot::boxFill(), use CPlot::fillStyle(). *) by default, a plot has all borders and mirror tics *) updated CPlot::plotType() for filled curves with an argument for color. plot.plotType(PLOT_PLOTTYPE_FILLEDCURVES, num, "y1=20", "blue") *) added void CPlot.axis(int axis, int linetype, int linewidth, char *colorname); plot.axis(int axisPLOT_AXIS_X, linetype, linewidth, "black"); to set the line style of cooridnate axes. *) added void CPlot.mathCoord(void); to set a math coordinate and related inforamtion. The member function is equivalent to lineType=1; lineWidth=1; plot.axis(PLOT_AXIS_XY, lineType, lineWidth, "black"); plot.border(PLOT_BORDER_ALL, PLOT_OFF); plot.ticsMirror(PLOT_AXIS_XY, PLOT_OFF); plot.grid(PLOT_ON, "front"); plot.enhanceText(); if plot.plotType() has been called with PLOT_PLOTTYPE_FILLEDCURVE multiple times for filled curves, plot.fillStyle(num, PLOT_FILLSTYLE_TRANSPARENT_SOLID, 0.6); is set for each filled curve. *) added void CPlot:getGrid(int *flag, char *option) int flag; char option[32]; plot.getGrig(&flag, option); to get the grid information. *) added the following new Embedded Ch API *) added the Embedded Ch API Ch_Setbuf(), mainly for Windows. *) added the embedded Ch API Ch_AppType() with *) Added the Embedded CH API Ch_AppType() to test if an applications contains the header file "windows.h", "GL/gl.h", or "conio.h". It uses typedef enum ChApptype_ { CH_APPTYPE_REGULAR, /* all other applications */ CH_APPTYPE_WINDOWS, /* applications contain the header file <windows.h> or <GL/gl.h > */ CH_APPTYPE_CONIO /* applications contain the header file <conio.h> */ } ChAppType_t; *) added the Embedded CH API Ch_ParseScriptNoInit() to parse a Ch program without initializing global variables. *) added macros __i386__ for Intel x86 32 bit machine *) added macros __i86_64__ for Intel x86 64 bit machine *) added the command 'activation' for license activation for Windows, Linux, and Mac OS X *) added bluetooth support in Windows *) added handling of computational arrays for scanf() family functions array double a[5]; scanf("%lf", &a); /* or fscanf(fp, "%lf", &a); */ it will read 5 numbers at once using "%lf" separated by one or multiple of the chararacters ' ' ',' ';' ':' or a newline character. *) Updated the command 'man' in Windows so that it works when Ch is installed in a directory with space. *) added the utility program Putty putty.exe in Windows for remote login *) added the utility program WinSCP winscp.exe in Windows for copying programs between PC and Unix *) added the utility program 7z.exe for 7Zip files *) added the utility program splint.exe for checking C syntax. *) added the utility program png2icon.exe for converting png files to icon files *) Associate QuickAnimation file with file extension .qnm with QuickAnimation icon of C:/Ch/bin/qnm.ico and C:/Ch/sbin/qanimate.exe *) Associate files with file extensions .chf, .chs, .chrc, .chsrc, _chrc, _chsrc .c, .C, .h .cc, .cpp, .cxx, .hh, .hxx .hpp with ChIDE chide.exe if no prior association. Else ask if they want to be associated with chide.exe *) merged directories CHHOME/toolkit/demos/ and CHHOME/toolkit/docs into CHHOME/demos/ and CHHOME/docs/ directories *) updated vim with vim version 7.3 *) Add the member chmtdir to the struct ChOptoin_t. If this member is not NULL, the member option.chmtdir specifies the directory for dynamically loaded libs chmt1.dl, chmt2.dl, etc. for Ch_Initialize(interp, option). *) Fixed the following bugs: correctly using the same interpreter. *) fix the memory leak for array of long long type long long a[3] = {0L, 0L, 0L}; long long b[3] = {0L, 0L, 0L}; for (i=0; i<3000000; i++) { a[0] = a[0] - b[0]; } *) fixed the crash for int a[4], *p; p = &a[2]; p[-2]; // not to crash for Windows 64 bit platform *) fixed Embedded Ch when the first script failed, the second script can run *) fixed end-less error message for for (int i =0; i< 10; i++) printf("i"); in the command mode for now. This C99 feature will be added in the future version of Ch. *) fixed the crash for struct tag { int var; } s; 10-s.unknown; *) fixed in Debug Command Window in ChIDE to input expressions with variables as arguments, such as strlen(s), strcmp(s1, s2), for evaluation at runtime. *) fixed using string_t for fread() string_t s; fread(s, element_size, count, stream); *) fixed the crash when stream is NULL for fread(ptr, element_size, count, stream); fwrite(ptr, element_size, count, stream); *) fixed the crash using scanf() for string_t type; string_t str; scanf("%s", &str); *) fixed crash by just typing $ in a Ch command window. *) fixed crash for strcpy(NULL, "str2") and strncpy(NULL, "str2", n) *) fixed sizeofelement() for treating 'complex' as 'double complex' *) Fixed the crash for (s+i)->var in struct { int k, var; } s[5]; j = (s+i)->var; *) Updated the following documentations: *) updated Ch User's Guide chguide.pdf on the command shell to use ch -r command > filename to redirect command's standard output (stdout) and standard error (stderr) to the file 'filename command >filename 2>&1 (in Unix) command 1>filename 2>&1 (in Windows) to redirect command's standard output (stdout) and standard error (stderr) to the file 'filename' Version 6.3.0 build 14141 December 28, 2010 *) updated ChIDE to increase the veritical size of the output pane to display message properly without resizing. *) updated math.h so that y0, y1, yn, j0, j1, jn can be used as global variables. *) updated time() as a generic function so that the header file time.h is optional to use time(). *) When the EOF is reached using cin, it will quit for while(cin >>i) { ... } Version 6.3.0 build 14131 November 30, 2010 *) fixed the debug callback for Ch_ExecScript() and ChIDE debug feature. Version 6.3.0 build 14121 November 25, 2010 *) fixed the error of structure size alignment with variable of double type in Linux 64-bit. *) fixed Ch_DataType() for members of array type for a structure is consistent with the array type. *) with the above fix for Embedded Ch, the debug command in Debug Command Pane in ChIDE, will be able to display a member of array type, such as s.name below, for a structure correctly. struct tag{ char name[32]; } s; *) updated ChIDE User's Guide in Chinese *) fixed ChIDE for the following key commands. Ctrl+K Find matching preprocessor conditional, skipping nested ones Ctrl+Shift+K Select to matching preprocessor conditional Ctrl+J Find matching preprocessor conditional backwards, skipping nested ones Ctrl+Shift+J Select to matching preprocessor conditional backwards *) fixed Embedded Ch, enabled callback for Ch_CallFuncByName() even if the entire script has not be executed yet, this is a bug introduced in Version 6.3.0 build 14111. *) updated on-line documentation using command "man" such as > man y0 for special C/C++ functions in man/man3 Version 6.3.0 build 14111 November 14, 2010 *) fixed the bug for the ternary operation d? x : y When the floating point number d is in the range of 0<d<1, the expression x, instead of y, will be evaluated correctly. *) updated Ch function removeFuncProto() in Ch SDK to run in Windows Vista and Windows 7 in a regular user account. *) fixed the following bug in ChIDE . *) If a program uses "\r" inside printf() to print output, before a "\n" is used in printf() and then scanf() is used to get input. The command "Run" in ChIDE will fail to handle the scanf() correctly. *) Run a program with scanf() using the command "Run" in ChIDE but the output using printf() without any "\n". *) added a feature of ChIDE in debug mode that it can get the address of pointer to pointer int **p2; // in a program debug> &p2 *) fixed ChIDE so that in debug mode it gets the address of pointer correctly. int *p; // in a program debug> &p *) fixed ChIDE and Embedded Ch debug feature. When a script without the function main(), debug will not step into header files with file extension .h. *) Variables j0, j1, jn, y0, y1, yn in programs will not be syntax highlighted. *) overloaded the plotting class CPlot with the following member functions to simplify handling of 2D plots. plot.point(x, y) plot.line(x1, y1, x2, y2) plot.arrow(x_head, y_head, x_tail, y_tail) plot.arrow(x_head, y_head, x_tail, y_tail, option) plot.text(string, justify, x, y) plot.polygon(x[], y[]) plot.polygon(x[], y[], n) *) Fixed the command man in Windows for man file stored as command.1.txt. *) added the cubic root function cbrt() in Windows *) fixe Ch_AppendParseScript*() and Ch_Abort(). When no program has been executed yet, Ch_Abort() will be ignored. Version 6.3.0 build 14101 October 27, 2010 *) fixed the class CPlot to run in Linux Ubuntu 10.10. If without libreadline.so.5, it will be copied to the system. Version 6.3.0 build 14101 October 7, 2010 *) fixed c2chf.exe in Ch SDK for Windows 7 in win32. Version 6.3.0 build 14101 October 1, 2010 *) fixed the printf("%f", -0.0) family for -0.0 in Windows 32 and 64 bits. It will print out -0.000000 instead of --0.000000. since VC++ 2005 handles -0.0 differently from the previous versions. Fixed the same error for float f1 = -0.0; double d1 = -0.0; printf("%f",f1) printf("%f",d1) will give --0.000000. *) fixed to give a correct error message for the case of int main(); when the function definition main() is missing. *) enabled the aliases for rm, cp, etc. in the start up file _chrc and .chrc Version 6.3.0 build 14091 September 24, 2010 *) fixed the command 'man' in Windows 64-bit platform. *) added man pages for standard C functions for Windows 32 and 64 bits. For example, man sin *) added man pages for some Ch functions. For example, man foreach man str2ascii *) added groff.exe and some other Unix commands in Windows 32 and 64 bits. Version 6.3.0 build 14091 September 17, 2010 *) fixed a bug in Windows, to ignore "Enter" as a newline character in the same manner as as space or Tab key in scanf() for int i; printf("enter a number: "); scanf("%d", &i); This is a bug introduced when scanf() was fixed can handle backspace key. Version 6.3.0 build 14081 September 5, 2010 *) Fixed the crash for typedef struct { int a; int b; } TestCase; TestCase s[2] = { , */ {25, 54} }; *) Fixed the crash for class tag { public: int a; tag(); } c[2]; when the constructor tag::tag() is missing. Version 6.3.0 build 14071 August 30, 2010 *) updated chinstall.pdf *) updated chide.pdf Version 6.3.0 build 14071 August 26, 2010 *) fixed the bug for Ch Student Edition license checking *) added the header file qanimate.h for Ch Professional and Ch Student Edition Version 6.3.0 build 14061 August 20, 2010 *) fixed the license issue for Embedded Ch Professional Edition in Windows/Linux/Mac *) fixed setting the Embedded Ch home directory with '/' o r'\' at the end of the directory for Windows as shown below. option.chhome=strdup("C:/Ch/toolkit/embedch/"); Ch_Initialize(&interp, &option); Version 6.3.0 build 14051 August 5, 2010 *) fixed the following crash for AIX 64-bit typedef struct tag tag; Version 6.3.0 build 14041 July 2, 2010 *) fixed Ch Pro to run Ch Mechanism for Linux (32/64 bits) and Mac OS X x86 Version 6.3.0 build 14041 June 30, 2010 *) fixed crash for int fun(a, b) int main() { } *) fixed inconsistency results FILE *p; printf("%p", p); *) fixed the crash introduced in version 6.3.0.14001 for ch -v Version 6.3.0 build 14031 June 18, 2010 *) fixed the demo toolkit/demos/embedch/chapters/chapter5/embedfunc/ for using VC++ 2010 *) fixed SIGL using static lib Version 6.3.0 build 14031 June 15, 2010 *) utilized code signing and signed installation executable files in Windows. *) fixed to generate error message for an extra argument int extra; int myClass::memfunc(void); myClass::memfunc(extra); // ERROR with an argument *) fixed to generate error message for an extra argument int extra; int func(void); func(extra); // ERROR with an argument *) fixed for class constructor without argument using "void". myClass::MyClass(void); myClass var; // OK *) fixed the crash for if (t.undefinedMemberFunc()) { // ERROR without crash ... } *) check for a valid license in ChIDE Version 6.3.0 build 14021 May 28, 2010 *) added the updated Japanese documentations for Ch User's Guide chguide.pdf ChIDE User's Guide chide.pdf on-line HTML Files Ch Reference Guide chref.pdf QuickAnimation User's Guide qanimate.pdf *) supported Visual Studio 2010 for Windows and Win64 in startup file _chrc *) included header file stdarg.h in the header file wchar.h to avoid error messsage of missing va_list. *) fixed the crash bug for declaration within a switch statement such as switch(i) { int f; case 1: ... } With this declaration inside a switch statement, any error in the script would cause a crash when the allocated memory for the switch statement is freed, before this bug has been fixed. *) fixed the crash for int main(void) { long result=0; switch(result) { return 1; } *) fixed the crash for incorrect declaration and initialization right below a brace. { int g = undefined; // it would crash ... } *) fixed crash for fclose(NULL); *) fixed crash for NULL stream for wide character functions in wchar.h *) fixed crash for Sleep.chf with definition of "int sleep(...)" inside the function file Sleep.chf; and similarly for other functions. *) fixed the crash for defining a member function inside a class/struct/union definition class a{ void f(void) { int g; } int b; }; *) fixed plotxy() and plotxyz() using array arguments of [ ]. int func1(double x[], double y[], int n){ plotxy(x, y, n, "title", "x-label", "y-label"); } int func2(double x[], double y[], double z[], int n){ plotxyz(x, y, z, n, "title", "x-label", "y-label", "z-label"); } int func4(double x[], double y[], double z[], int nx, int ny){ plotxyz(x, y, z, nx, ny, "title", "x-label", "y-label", "z-label"); } Version 6.3.0 build 14011 May 19, 2010 *) fixed ChIDE menus for different locales in Win64 Version 6.3.0 build 14011 May 10, 2010 *) fixed c2chf.exe command in Ch SDK compiled using VC++ 2005 for Windows 32 and 64 bits. *) fixed the hanging of a program with a missing '{' for a switch statement during parsing. For example, switch(index) case 2: *) fixed ChIDE for displaying two or higher dimensional arrays. int a[2][3][4] *) fixed ChIDE for displaying values of nested struct/class such as s2 below struct tag1 {int i; struct tag2{int i, j}s; } s2; *) fixed printing for computational arrays using the format specifier "%lf" array double a[3]; printf("%lf", a) Version 6.3.0 build 14001 April 28, 2010 *) fixed the error in the system startup file chrc for Mac PPC. *) RLM license included. *) Add a new member 'licensestr' to ChOptions_t structure for Embedded Ch. *) fixed displaying arrays of structures in Local and Variables menu *) added chguide.pdf, chref.pdf, chsdk.pdf for distribution of Embedded Ch by default Version 6.3.0 build 13901 April 13, 2010 *) modified ChIDE 1) fixed displaying ararys of structures in Local and Variables menu 1) scanf.c can be executed multiple times in debug mode in Unix. 2) header file in the current directory included by #include "header.h" using the "Run" command Version 6.3.0 build 13901 April 10, 2010 *) added mask CH_MASKBINCALLBACK for Ch_AddCallback(). It enables callback when a script code is invoked from the binary space by APIs such as Ch_CallFuncByName(). For example, Ch_AddCallback(interp, CH_MASKLINE | CH_MASKBINCALLBACK, callback, clientdata, count); Version 6.3.0 build 13891 March 19, 2010 *) fixed the memory leak for CPlot::deleteData() in CPlot class. *) _chrc updated for Win 64-bit for using VC++ 2005 and VC++ 2008 *) updated SIGL in Ch Student Edition for Win 64-bit for using VC++ 2005 and VC++ 2008 *) fixed ChIDE command Indent to update the indented program. Version 6.3.0 build 13891 January 28, 2010 *) fixed the buffer overflow for char str[2]; cin >> s; // input more than 2 character, including '\0' characters Version 6.3.0 build 13891 January 22, 2010 *) fixed ChIDE to display values for variables of arrays with more than 80 characters in debug pane. Version 6.3.0 build 13891 January 21, 2010 *) fixed the crash for using a deferred shape array with 0 size: int n = 0; int a[n]; a[2] = 10; // fixed this crash Version 6.3.0 build 13891 January 19, 2010 *) fixed ChIDE in Windows for the display of "Stack 0" in different multi-byte languages such as Japanese (ok for Chinese) in the Debug Pane when the debug pane selection bar selects "Variables". *) Added localized language support for Afrikaans and Aribic in ChIDE Version 6.3.0 build 13881 January 16, 2010 *) fixed ChIDE in Windows, the Debug Console Window cannot hold the value after the program is run by the commad "Run". *) fixed ChIDE in Linux/Mac, the output pane will freezed when scanf() is used multiple times. *) fixed ChIDE when ChIDE is minimized and then exited, it cannot be opened again in Windows. *) fixed ChIDE to update ~/[.]ChIDE.session for different editions and versions. Version 6.3.0 build 13871 January 8, 2010 *) fixed ChIDE to run OpenGL and Windows application programs in Windows. *) fixed ChIDE to run OpenGL application programs in Linux *) fixed ChIDE for using the environment variable LD_LIBRARY_PATH in Linux *) fixed ChIDE for using the environment variable DYLD_LIBRARY_PATH in Mac OS X *) fixed ChIDE to close it quickly if with many opened files in buffers, instead of taking long time. *) fixed the bug for struct node buf[3]; fread(buf, sizeof(struct node), 3, stream); when buf is an array of structures. *) added the feature to support 'const' in C for constants. For example, it will give the error messages for the following cases: const int i, *p; int * const q; i = 10; // ERROR: lvalue is a const object p = &i; *p = 10 // ERROR: lvalue is a const object q = &i; // ERROR: lvalue is a const object Version 6.3.0 build 13861 December 30, 2009 *) fixed a bug for string concatenation. *) fixed a bug for size of structure. fixed crash for X11 Motif programs in Solaris. Version 6.3.0 build 13851 December 24, 2009 *) added QuickAnimation for quick animation and display of geometries and objects Version 6.3.0 build 13851 December 5, 2009 ######## New Features related to ChIDE in all platforms ######## *) In ChIDE, enable the command "Run" in ChIDE in Linux and Mac OS X to run programs with input from stdin using scanf() and other I/O functions. *) In ChIDE, use different colors for different stacks for calling functions. Add using a different color for a different stack. Use the same colors in the Debug Pane to correspond the stacks in the Debug Pane when the menu Variable is selected in Debug Selection Bar. *) In ChIDE, added the feature of using abbreviations for shortcut. added the option to open global and user abbreviations files in the Options menu in ChIDE. The shortcuts include a template for homework, adding header files, macros, function main(), control structure and repetition statements, struct/class/union/enum types, array/characters/string constants, standard header files, standard functions, etc. *) In ChIDE, added the feature to allow the user to set the size of debug pane and sizes of debug tabs in ChIDE in Windows. These values in the previous session will be used when ChIDE is launched next time. *) In ChIDE C/Ch/C++ programs can be typed in the Output Pane to run directly. *) In ChIDE, program names can contain spaces. *) In ChIDE, added menu tips for "Locals", "Variables", "Stack", "Watch", "Breakpoint" in Debug Pane for Linux and Mac. *) In ChIDE, "Stack" for Variables menu in Debug Pane is translated in different languages. *) In ChIDE, file ~/[.]ChIDEUser.properties will be updated automatically for a different version. *) In ChIDE, session file ~/[.]ChIDE.session file is saved with the version number. *) In ChIDE, each user can use different font size for Ch Professional Edition. *) In ChIDE, the commands 'ch' and 'which' work in the output pane in ChIDE in Linux and Mac. *) In ChIDE, added the command View | Default Layout to reset the default layout based on the properties in CHHOME/chide/ChIDEGlobal.properties and ~/[.]ChIDEUser.properties. *) In ChIDE, changed the command View |Debug to View |Debug Pane *) In ChIDE, changed View | Parameters to Tool | Command Line Arguments *) In ChIDE, added the properties debugpane.horizontal.size=300 debugpane.vertical.size=155 to set the size of debug pane in ChIDE. *) In ChIDE, added the properties debugtab.locals.name.size=160 debugtab.variables.name.size=160 debugtab.stack.stacklevel.size=160 debugtab.watch.expression.size=160 debugtab.breakpoints.number.size=110 to set the sizes of debug tabs in ChIDE in Windows. Although the sizes for these values can be setup, they are automatically adjusted in Linux. *) In ChIDE, added the properties debugconsolewindow.left=600 debugconsolewindow.top=128 debugconsolewindow.width=429 debugconsolewindow.height=319 to set the position and size of Debug Command Window in Windows. *) In ChIDE, added a clickable menu when the file name is right clicked for ChIDE in Linux and Mac so that ChIDE will behave the same as in Windows. *) In ChIDE, changed the Indent command in ChIDE for proper indentation of cases in switch-statement, and private and public in a class definition. *) In ChIDE, added auto complete word when editing the program . *) In ChIDE, added the feature to allow the user to set the size of debug pane and sizes of debug tabs in ChIDE in Windows. *) In ChIDE, Ch scripts without a file extension will be treated properly with syntax highlighting, executable permission, etc. *) In ChIDE, Handling the Indent command in Tools menu and context menu by clicking the file name has been improved for C/Ch/C++ program with or without file extensions. *) In ChIDE, Handling makefiles in Tools menu and context menu by clicking the file name has been improved for the following makefiles: *.mak makefile Makefile makefile.win Makefile.win makefile_win Makefile_win makefile.Win Makefile.Win makefile_Win Makefile_Win *) In ChIDE, fixed in Unix for "Save As" command. The newly created C/Ch/C++ program will be executable in the Ch command shell. *) In ChIDE, associated the function key F4 with "Next Error Message", instead of "Stop Executing". *) In ChIDE, changed "Next Message" and "Previous Message" to "Next Error Message" and "Previous Error Message", respectively, in ChIDE. *) In ChIDE, updated with the better color for foreground and background for selection of text inside the editing pane. *) In ChIDE, added a Ch icon in the entry System Tools in the startup menu in Linux to launch Ch in the startup menu in Linux. *) In ChIDE, ChIDE is supported for Linux x86 64-bit now. *) In ChIDE, sessions in ChIDE is saved in ~/ChIDE.session in Windows and ~/.ChIDE.session in Unix. *) In ChIDE, when execute a program with scanf() in "Run" in ChIDE in Windows, the cursor moves to the input/output pane automatically. *) In ChIDE, added in Linux. The command "ch -d" will create an icon for Ch on the desktop. If Ch is installed with a ChIDE, an icon for ChIDE will also be created on the desktop. ######## New Features in all editions and platforms ######## *) Ch Student Edition contains Ch Mechanism Toolkit and Ch Control System Toolkit, in addition to SoftIntegration Graphical Library (SIGL). *) compiled Ch and Embedded Ch for Windows using Visual C++ 2005 To be compatible with the binary code, the data type time_t in Windows is 8 bytes, instead of 4 bytes. *) The function _wfopen() works in in Windows using VC++ 2005 *) added API Ch_Reset() so that Ch_RunScript() and Ch_ExecScript() can be called multiple times for a single instance of interpreter. *) update Windows commands for the Win64 platform. *) added functions complexsolvePP(), complexsolvePR(), complexsolveRP(). complexsolveRR(), complexsolveRRz() in numeric.h *) Several Unix utility programs in Windows are updated to run in Windows 64-bit. *) added CPlot::sizeOutput(int xpixels, int ypixels); *) added the function int funcarray(double *y, double (*func)(double x), double *x, int n); in numeric.h ######## Bugs fixed ######## *) In ChIDE, Fixed the frozen screen for a short period of time for ChIDE and Debug Console Window when the Debug Console Window is moved in Windows XP. *) In ChIDE, fixed delete functionality for delete Chinese characters in the editor pane in ChIDE *) Fixed crashing of ChIDE for Windows for a large program with many function files. *) In ChIDE, fixed pass command line arguments to a program in debug mode. *) In ChIDE, fixed pass command line arguments to a binary program. *) In ChiDE, fixed hot keys for several menus. *) fixed "Expression" in "Watch" in ChIDE in Windows *) fixed error messages when an error appears in the previous lines to make the error messages more clear. *) fixed error messages from "debug> " in the Debug Command Pane in ChIDE to make the error messages more clear. *) fixed in vertical mode, by default, "debug> " is missing in ChIDE. *) use "Number" instead of "Breakpoint Number" for Breakpoints by default in ChIDE. *) In ChIDE, fixed plotting for Mac OS X x86 v10.6 or higher *) updated Debug Console Window for ChIDE and Ch Terminal in Linux. *) The indenting feature updated in ChIDE *) fixed crash for Ch Student and Evaluation Edition when the size of an array exceeds the limit. *) fixed ChIDE to translate different editions in the proper locale. *) fixed ChIDE, for the debug command 'Clear' for clear breakpoints. The menu 'Clear' is non-clickable if no breakpoint has been set yet. *) In ChIDE , fixed, in Windows, when clicking the blank space on the left of "Breakpoint" menu on Debug Pane, it will close Output Pane or change to a different size. *) fixed the function with the data type of a return value different from the function return type. An implicit cast is applied. *) updated Ch User's Guide about handling of wide characters. *) fixed applications using Embedded Ch with multi-threads for Linux 64bit and other platforms. *) fixed error message handling in ChIDE to load the correct file based on the errror message. *) fixed "Watch" menu in the Debug Selection Bar in ChIDE for watching multiple expressions in Unix. *) fixed Help and ChIDE Help menu in ChIDE. *) Fix ChIDE in Windows Vista when no session file, it did not work for the first time. *) fixed load sample code when ChIDE is started first time. *) fixed the font size in Debug Pane of ChIDE to be the same as other panes in both Windows and Unix. *) fixe the ChIDE, the width of the names in Debug Pane can also be adjusted in Linux and Mac OS X *) fixed ChIDE error message when a file cannot be saved in a directory. *) fixed the _status value even when the function main() returns char type. This also fixed the return value for Ch_RunScript(). *) fixed plotting in some linux distribution *) fixed line type, line width, color attributes for points, lines, rectangles, polygons, and circles of plotting. *) fixed the menu for changing font size in ChIDE *) fixed ChIDE in Unix works when Ch is not installed in /usr/local/ch. *) In ChIDE , fixed, in Windows, when clicking the blank space on the right of " Breakpoint" menu on Debug Pane, it will close Output Pane or change to a different size. *) fixed crash for char ss[100]; void func(char **value); func(&(&ss)); // this crash fixed *) fixed crash of vsnprintf() in Windows and Linux *) fixed signal.h, param.h, endian.h, and byte_order.h in Mac OS X x86 *) fixed the case struct tag { int (*p[10])(void); } t; int func(void); t.p[0] = func; *) updated the demo for gethostbyaddr() and gethostbyaddr_r() *) Fixed the data type sizeof() in 64-bit machine as unsigned long long *) updated round(); *) fixed memory leak for if(exp1) return val1 else if(exp2) return val2 else return val3 Version 6.1.0 build 13751 April, 2009 *) fixed plotting data with small values. *) added indentation (program astyle) for Linux and Mac OS X x86 for Ch Pro, student, and evaluation edition for ChIDE. Version 6.1.0 build 13741 February, 2009 *) added the function _wfopen() and its prototype in the header file wchar.h for Windows. *) added #include <stdarg.h> in the function file wprintf.chf for use in the command prompt. Version 6.1.0 build 13731 January, 2009 *) fixed infinite number of calls to Ch_AppendRunScript() in Linux. Version 6.1.0 build 13721 January, 2009 *) supported hexadecimal floating-point contants in C99 0xhex_digit_seq[.hex_digit_seq]p[+|-]binary_exponent[suffix] which is interpreted as hex_digit_seq.hex_digit_seq x 2^((+|-)binary_exponent) For example, in a Ch command shell, > 0X2P3 16.0000 > 0x1.1p0 1.0625 > 0x1.1p1F 2.12 *) fixed the infinite number of instance of Embedded Ch using Ch_Append*(). Closed the last file so that no error message for exceeding the number of opened function files. *) fixed the very large number for isinf() and isfinite(). Version 6.1.0 build 13721 January, 2009 *) fixed scanf() in the Ch command shell does not return a value *) fixed C array name in the Ch command shell will show the prompt properly. Version 6.1.0 build 13711 January, 2009 *) added the following math functions in math.h for C99 #define lround(X) ((long int) round(X)) #define llround(X) ((long long int) round(X)) #define isunordered (X, Y) (isnan(X) || isnan(Y)) int fpclassify(double); int isnormal(double); int signbit(double); #define FP_NAN 0 #define FP_INFINITE 1 #define FP_ZERO 2 #define FP_SUBNORMAL 3 #define FP_NORMAL 4 *) added the following math functions in math.h for C99 for Linux and HPUX llrint.chf llrintf.chf lrint.chf lrintf.chf nexttoward.chf nexttowardf.chf *) added the following to float.h for C99 #define FLT_EVAL_METHOD -1 #define DECIMAL_DIG 21 #define HUGE_VALF FLT_MAX #define MATH_ERRNO 1 #define MATH_ERREXCEPT 0 #define math_errhandling MATH_ERRNO typedef float float_t; typedef double double_t; Version 6.1.0 build 13711 January, 2009 *) Fixed fabs() to treat it as a type generic math function. it returns double. Version 6.1.0 build 13701 January, 2009 *) Fixed int func(int a[restrict]); int func2(int b[restrict][10]); *) Fixed the header file tgmath.h to include complex.h *) Fixed fabs() to treat it as a type generic math function in math.h. Version 6.1.0 build 13701 December, 2008 *) Fixed int * restrict ptr; int * volatile ptr; Version 6.1.0 build 13691 December, 2008 *) Fixed enhanced text for subplots using CPlot::enhanceText() *) updated Ch_AppendParseScript() and Ch_AppendParseScriptFile() with WARNING3 level. *) fixed pkginstall.ch by adding the following command for Linux chcon -t texrel_shlib_t $chpackage/$(pkgname)/dl/*.dl Version 6.1.0 build 13681 November, 2008 *) fixed the crash in 64-bit machines double **a; a[i] = address; Version 6.1.0 build 13671 November, 2008 *) added Dynamical Embedded Ch lib *) fixed the crash for Ch_Reopen(interp, filename) when filename does not exist or do not have proper permission. Version 6.1.0 build 13661 November, 2008 *) fixed the crash for a return statement not in a function definition. *) fixed the crash for integer mod by zero intvalue%0. Version 6.1.0 build 13651 October, 2008 *) fixed int func(); (*func)(); Version 6.1.0 build 13641 October, 2008 *) fixed ChIDE for debugging programs with pointer to pointers. (no change for the kernel) *) updated binary programs egrep.exe, fgrep.exe, file.exe, grep.exe, wget.exe in CHHOME/bin/ for Windows Version 6.1.0 build 13631 September, 2008 *) added CPlot::lineType(int type, int width, ... /* char *colorname or rgb */), to change line type, width, and color for lines, impulses, steps, etc. *) added CPlot::pointType(int type, int size, ... /* char *colorname or rgb */), to change point type, size, and color for points. *) added CPlot::enhanceText(void) to turn on the enhanced text mode for terminal and output files that support additional text format. *) 3D curve in plotting does not use color box. *) ChIDE updated with the following features (a) When dragging the divide line between text editing window and output, debug window will not be displayed if it was not visible to start with. (b) rearranged function keys for ChIDE (c) rearrange items for Views, Tools, Debug, and Option menus. *) documented compilation options /MDd, /MT, /MTd for using Embedded Ch in Windows *) documented support of Intel C++ compiler for Embedded Ch. Version 6.0.0 build 13621 September, 2008 *) modified Ch_AppendRunScript() so that the code can have more 5120 characters. *) modified Ch_AppendParseScript() so that the code can have more 5120 characters. *) fixed Ch_CallFuncByNameVar() for arguments of structure type. *) added API int Ch_CallFuncByAddrv(ChInterp_t interp, void *fptr, void *retval, va_list ap); int Ch_CallFuncByNamev(ChInterp_t interp, const char *name, void *retval, va_list ap); Version 6.0.0 build 13611 August, 2008 *) fixed crash in Linux for Ch_AppendParseScript(interp, "#include \"headerfile.h\""); *) fixed the return value for Ch_AppendRunScript(interp, code); Version 6.0.0 build 13601 July, 2008 *) fixed 'help' command in Mac OS X due to strcmp(_Chedition, "Standard") *) updated header files for 64-bit machines for size_t, ssize_t, and ptrdiff_t *) updated malloc() for 64-bit machines *) fixed converting tokens of predefined macros into strings in nested macros #define DO_STR(thing) STR(thing) #define STR(thing) #thing printf("str = %s\n", DO_STR(__FILE__)); Version 6.0.0 build 13591 July 17, 2008 *) fixed Ch_DeclareVar() in Mac OS X *) fixed 'k=j;' in 'int i, j; int &k = i; k = j;' *) fixed crash for 'void f1(void) { f2(int path);}' *) added a default session for the first time use of ChIDE *) fixed getnum() printing the message twice. *) fixed ChIDE (a) handling of Tabs in Makefiles in ChIDE correctly (b) disabled clicking to close Debug Console Window (c) Output pane can be closed during debugging using Continue, Step, Next. *) fixed CPlot::dataFile() for 3D plotting to not remove data file. *) added yank function ^Y for emacs editing in Ch command shell. after you used ^U, ^W, ^K, then you can paste the strings you deleted everywhere Version 6.0.0 build 13581 April 6, 2008 *) fixed handling '\n' in Ch_AppendParseScript(interp, "class def{int a;\ int j; \n\ double d;};"); *) updated ChIDE source code with .ch extension will be treated as C++ code for compilation. *) updated CHHOME/docs/man/cat1/ for Windows *) command 'hexdump' added in Windows. It dumps a file to a stdout in CP/M-like hexadecimal format. *) changed, complex is by default double complex complex z; double complex z; are the same. Use float complex z; to declare z of two floats, one for real and the other for imag part *) updated _chrc default for support .NET 2005 and 2008 for X64 compilation. *) fixed bool in stdbool.h *) changed the Boolean type "bool' from int to unsigned char in stdbool.h Version 6.0.0 build 13571 April 1, 2008 *) fixed sin() and cos() in Korebot Linux *) fixe if /usr/lib/lib/libreadline.so.4 does not exist, keep /usr/local/ch/extern/lib/libreadline.so.4 for Linux *) fixed gnuplot_x11 driver plotting issue for Linux and Unix Version 6.0.0 build 13571 March, 2008 *) support Visual C++ 2008 for Ch SDK *) fixed complex.h remove the complex data types double_complex float_complex in complex.h. They are no longe supported in C++. Users needs to typedef in their own program for this. *) fixed the error message ERROR: mod operator % is applied to nonintegral values Version 6.0.0 build 13571 March, 2008 *) added getline.h and getline() compatile with GNU getline() in all platforms. Version 6.0.0 build 13571 March, 2008 *) fixed median() in Ch command shell *) fixed comparison of unsigned char's with value larger than SCHAR_MAX Version 6.0.0 build 13561 February, 2008 *) fixed plotting for Mac OS X. Version 6.0.0 build 13551 February, 2008 *) fixed function copysign() in Windows *) fixed floating-point numbers *) added vc .net 2008 support for ch Version 6.0.0 build 13541 February, 2008 *) added function round() in C99 *) fixed floating-point constant values with consistent values after 15 significant digits *) updated the local file locale.ko_KR.properties with Korea translation *) updated locale files locale.*.properties updated Version 6.0.0 build 13531 February, 2008 *) fixed getline() in stdio.h so that it is consistent with C for Linux *) fixed double quotation marks in command line (1) commandarg.c \"str1 str2\" "str3 str4" "str5" str6 (2) alias("findg", "find . -name _argv[1] | xargs grep _argv[2]"); in .chrc or _chrc for command findg "*.h" time.h Version 6.0.0 build 13521 February, 2008 *) fixed when the Debug Console Window is closed by the command View | Debug Console Window. The command View | Debug Console Window Always on Top is not necessary. *) fixed time(NULL) interactive executed in a Ch command shell. Version 6.0.0 build 13521 January, 2008 *) fixed evaluation edition for Windows Version 6.0.0 build 13511 January, 2008 *) fixed dllink.exe for Windows. Mac OS X, and QNX *) added 'Views' | 'Change Font Size' in ChIDE *) updated indent option for handling braces in ChIDE *) fixed the relational expressions with (unsigned) long long types in Windows such as ulli_zero > ulli_max Version 6.0.0 build 13501 December, 2007 *) fixed Ch_Initialize() for multi-thread applications Version 6.0.0 build 13491 December, 2007 *) fixed crash for calling Ch_Abort() right after Ch_ParseScript(). *) fixed hang for the multi-byte space characters int a,b;\201@\201@ *) added _formatf with ".2f" for the default output format for float. _formatd with ".4lf" for the default output format for double. *) fixed a[i] in debug command in ChIDE Version 6.0.0 build 13481 November, 2007 *) fixe array size handling for student edition Version 6.0.0 build 13471 November, 2007 *) Overloaded plotxy() function to be compatible with SIGL C++ graphical lib plotxy(x, y, n); plotxy(x, y, n, title, xlabel, ylabel); plotxy(x, y, n, title, xlabel, ylabel, &plot); in addition to plotxy(x, y); plotxy(x, y, title, xlabel, ylabel); plotxy(x, y, title, xlabel, ylabel, &plot); *) Overloaded plotxyz() function to be compatible with SIGL C++ graphical lib plotxyz(x, y, z, n); plotxyz(x, y, z, n, title, xlabel, ylabel, zlabel); plotxyz(x, y, z, n, title, xlabel, ylabel, zllabel, &plot); plotxyz(x, y, z, nx, ny); plotxyz(x, y, z, nx, ny, title, xlabel, ylabel, zlabel); plotxyz(x, y, z, nx, ny, title, xlabel, ylabel, zllabel, &plot); in addition to plotxyz(x, y, z); plotxyz(x, y, z, title, xlabel, ylabel, zlabel); plotxyz(x, y, z, title, xlabel, ylabel, zllabel, &plot); *) fixed ChValueNode_t Ch_ExprValue(ChInterp_t interp, const char *expr, void *result); when the expr is a function Version 6.0.0 build 13461 November, 2007 *) changed Embedded Ch API from int Ch_StackName(ChInterp_t interp, int level, int *isfunc) to int Ch_StackName(ChInterp_t interp, int level, int *isfunc, char **classname) *) For Ch_Initialize(&interp, NULL), by default, it will use CHHOME/toolkit/embedch/extern/lib/chmt1.dl, etc, instead of using /usr/lib/chmt1.dl, etc in Unix and C:/Windows/System32/chmt1.dl, etc in Windows it will use CHHOME/toolkit/embedch as Embedded Ch home dir instead of using CHHOME as Embedded Ch home dir Version 6.0.0 build 13451 October, 2007 *) fixed _warning Version 6.0.0 build 13441 October, 2007 *) fixed Ch_StackName() when the stack is changed. Version 6.0.0 build 13431 October, 2007 *) fixed vi for Windows Vista *) fixed CPlot::plot.axisRange(PLOT_AXIS_X2, min, max); CPlot::plot.axisRange(PLOT_AXIS_Y2, min, max); Ch_ChangeStack() source of the block gives the correct file name at the top level. Version 6.0.0 build 13421 October, 2007 *) Callback added by Ch_AddCallback() will be valid when main() is executed for a C/C++ program. For Ch script without main(), the callback will be called at the first executable line. When atexit() is called, callbacks will be disabled. Version 6.0.0 build 13411 September, 2007 *) Fixed the return value for Ch_ParseScript(). Version 6.0.0 build 13401 September, 2007 *) When the warning level for _warning is 3 or for parsing 'ch -n program' and Ch_ParseScript(), it will give a warning when the argument of function or assignment of point type does not match. *) fixed bug for system("cmd_with.c") in Windows Version 6.0.0 build 13381 August, 2007 *) added command astyle.exe for Windows for indentation of C/Ch/C++ programs *) moved Ch_Version() from Embedded Ch to Ch SDK *) added command "watch expr" in the sample debugger for EMbedded Ch. Version 6.0.0 build 13381 August, 2007 *) fixed bool in stdbool.h Version 6.0.0 build 13381 August, 2007 *) changed the Boolean type "bool' from char to int in stdbool.h *) added Embedded Ch APIs ChValueNode_t Ch_ExprValue(ChInterp_t interp, const char *expr, void *result); int Ch_DeleteExprValue(ChInterp_t interp, ChValueNode_t vn); to btain the value of an expression of different data type. Version 6.0.0 build 13371 August, 2007 *) fixed crash when the script, with class and incorrect syntax, is processed by Ch_ParseScript() second time. Version 6.0.0 build 13361 August, 2007 *) Added Embedded Ch API int Ch_StackName(ChInterp_t interp, int level, int *isfunc) to obtain the stack name. *) added member functions for CPlot class void CPlot::axes() void CPlot::barSize() void CPlot::boxBorder() void CPlot::boxFill() void CPlot::boxWidth() void CPlot::data() int CPlot::dataFile() void CPlot::dataSetNum() void CPlot::deleteData() void CPlot::funcp2D() void CPlot::funcp3D() void CPlot::legendOption() void CPlot::origin(); void CPlot::smooth() void CPlot::ticsLabel() void CPlot::ticsPosition() void CPlot::ticsRange() *) Overloaded the following member functions functions in SIGL C++ lib void CPlot::axisRange() void CPlot::coordSystem() int CPlot::dataFile() void CPlot::legendLocation() void CPlot::outputType() void CPlot::plotType() *) Added new plot types for CPlot class with macros PLOT_PLOTTYPES_BOXES PLOT_PLOTTYPES_BOXERRORBARS PLOT_PLOTTYPES_BOXXYERRORBARS PLOT_PLOTTYPES_CANDLESTICKS PLOT_PLOTTYPES_FILLEDCURVES PLOT_PLOTTYPES_FINANCEBARS PLOT_PLOTTYPES_VECTORS PLOT_PLOTTYPES_XERRORBARS PLOT_PLOTTYPES_XYERRORBARS PLOT_PLOTTYPES_YERRORBARS PLOT_PLOTTYPES_XERRORLINES PLOT_PLOTTYPES_XYERRORLINES PLOT_PLOTTYPES_YERRORLINES *) Added x2 and y2 coordinates with macros PLOT_AXIS_X2 PLOT_AXIS_Y2 *) Added filled boxes and curves with the fill styles void CPLot::boxFill() PLOT_BOXFILL_EMPTY, for "empty" PLOT_BOXFILL_SOLID, for "solid" PLOT_BOXFILL_PATTERN for "pattern" *) changed CPlot::grid(int flag, .../* int type */); to CPlot::grid(int flag) CPlot::grid(int flag, char *option) *) change plot.polarPlot(PLOT_ANGLE_DEG); plot.grid(PLOT_ON, PLOT_GRID_POLAR); to plot.polarPlot(PLOT_ANGLE_DEG); 1a) plot.grid(PLOT_ON); 1b)plot.grid(PLOT_ON, "polar"); 1c)plot.grid(PLOT_ON, "polar [angle]"); *) removed macros PLOT_GRID_POLAR PLOT_GRID_RECTANGULAR *) changed int arrow(double x_head, double y_head, double z_head, double x_tail, double y_tail, z_tail, ... /* [double line_type, double line_width] */ ); to int arrow(double x_head, double y_head, double z_head, double x_tail, double y_tail, z_tail, ... /* [char *option] */ ); *) fixed the crash there is no closing comment delimiter '*/' for a program using a function in a function file. *) fix the crash in command line for > int i > for (i=0;i<10;i++) {printf("%d",i)} ERROR: missing ';' > for (i=0;i<10;i++) {printf("%d",i);} ERROR: missing '}' Version 6.0.0 build 13351 July, 2007 *) fixed unsigned u = -1u; int i; i = 0-u; Version 6.0.0 build 13341 July, 2007 *) fixed when the data type of an lvalue of element of a VLA with an incremental operation is different from the data type of the rvalue int k, n=10; double a[n]; a[k++] = intvalue; // fixed this bug with k incremented twice *) updated arraycopy() to handle pointer type arraycopy(desptr, destype[_ptr], srcptr, srctype[_ptr], n); *) updated lindata() to handle pointer type lindata(x0, xf, a) lindata(x0, xf, p, n) Version 6.0.0 build 13331 June, 2007 *) added int Ch_InitGlobalVar(ChInterp_t interp, int flag); so that global variables are initialized at the parse time *) fixed initialization of an array of global scope. Like scalar variable, the inialization is done now at runtime, instead of parse time. *) fixed to give an error message for initialization of an argument of function such as "int func(int i=10)" at the parse time. Version 6.0.0 build 13321 June, 2007 *) added size_t Ch_DataSize(ChInterp_t interp, const char *expr); to obtain the size of a variable or expression. *) CH_MASKLINE will not trigger a statement multiple times *) Add a sample console debugger using Embedded Ch in embedch.pdf Version 6.0.0 build 13291 June, 2007 *) CH_MASKLINE will not trigger the internally added statement static const char __func__[]= "funcname"; CH_MASKLINE will not trigger declaration statement. int i; CH_MASKLINE will trigger declaration and initialization statement. int i = 10; CH_MASKLINE will trigger declaration of VLA. int n = 10; int a[n]; Version 6.0.0 build 13281 May, 2007 *) updated CPlot class *) CH_MASKLINE will not trigger the callback for non-executabe line of { and } Version 6.0.0 build 13271 May, 2007 *) added int Ch_DeclareTypedef(ChInterp_t interp, const char *name); Ch_DeclareTypedef() changes a system variable declared by Ch_DeclareVar() into a typedefed type specifier in the Ch space. *) added int Ch_AddCallback(ChInterp_t interp, int mask, ChBlock_t callback, ChPointer_t clientdata, int count); int Ch_ChangeStack(ChInterp_t interp, level, ChBlock_t *calldata); *) added ChUserDefinedTag_t Ch_UserDefinedTag(ChInterp_t, const char *name); int Ch_UserDefinedInfo(ChInterp_t interp, ChUserDefinedTag_t udtag, ChUserDefinedInfo_t *udinfo); int Ch_UserDefinedMemInfoByName(ChInterp_t interp, ChUserDefinedTag_t udtag, const char *memname, ChMemInfo_t *meminfo); int Ch_UserDefinedMemInfoByIndex(ChInterp_t interp, ChUserDefinedTag_t udtag, int index, ChMemInfo_t *meminfo); *) added void *Ch_GlobalSymbolAddrByName(ChInterp_t interp, const char *name); int Ch_GlobalSymbolIndex(ChInterp_t interp, const char *name); int Ch_GlobalSymbolTotalNum(ChInterp_t interp); void *Ch_GlobalSymbolAddrByIndex(ChInterp_t interp, int index); char *Ch_GlobalSymbolNameByIndex(ChInterp_t interp, int index); *) added API Ch_FuncType() with the return type of ChFuncType_t typedef enum ChFunctype_ { CH_NOTFUNCTYPE, /* not function */ CH_FUNCTYPE, /* regular function */ CH_FUNCPROTOTYPE, /* function prototype without function definition */ CH_FUNCPTRTYPE, /* pointer to function */ CH_FUNCMEMBERTYPE,/* member function of a class */ CH_FUNCCONSTYPE, /* constructor of a class */ CH_FUNCDESTTYPE /* destructor of a class */ } ChFuncType_t; Use Ch_FuncType() to test if a variable is a function prototype. *) Modified ChType_t Ch_DataType(ChInterp_t interp, const char *expr); ChType_t Ch_ArrayType(ChInterp_t interp, const char *expr); int Ch_ArrayDim(ChInterp_t interp, const char *name); int Ch_ArrayExtent(ChInterp_t interp, const char *name, int index); int Ch_ArrayNum(ChInterp_t interp, const char *name); int Ch_SetVar() int Ch_ExprEval() etc. to handle local variables. *) changed the handling of Ch_SymbolAddrByName(interp,"a") for array 'int a[2][3];' in Ch space to be consistent with handling of C array. change int *pa; pa = *(int **)Ch_SymbolAddrByName(interp,"a"); to int *pa; pa = (int *)Ch_SymbolAddrByName(interp,"a"); *) changed Function Ch_IsVariable() is deprecated. Use ChVarType(). Function Ch_IsFunc() is deprecated. Use Ch_FuncType(). Function Ch_SymbolIndex() is deprecated. Use Ch_SymbolIndexByName(). Use ChVarType() to test if a variable is a global or local variable. *) changed Ch_UserDefinedSize() is deprecated. Ch_UserDefinedName() is deprecated. use Ch_UserDefinedTag() and Ch_UserDefinedInfo(). *) changed Ch_ArrayType() A pointer to array of 'type' is not treated as array by Ch_ArrayType(). For a pointer to array of 'type', Ch_DataType() gives the pointer to 'type'. *) changed, A tag name for class, structure, union, and enum, and value for enumeration are not in the symbol table accessible by Ch_Symbol*() functions. Example, struct tag {}; enum tage{e1, e2}; tag, e1, e2 are not variables. They are not in the symbol table. *) fixed the display of C array in a command prompt *) fixed crash for VLA: int n=-1; int a[n]; Version 5.5.0 build 13261 April, 2007 *) fixed semaphore in Linux. Added sample code for using semaphone for both Unix and Windows at CHHOME/demos/lib/libc/semaphore/ for Unix CHHOME/demos/toolkit/demos/Windows/semaphore/ for Windows *) fixed specialmatrix() working in Windows with windows.h *) Added sample code for using event for Windows at CHHOME/demos/toolkit/demos/Windows/event/ *) added clock_settime() and clock_gettime() etc in Linux *) added command 'stackvar' in the command mode to display values of variables in all stacks in the current shell. For example, > int i = 10; > double d = 1.1234; > stack i 10 d 1.1234 *) changed. The computation and assignment for initialization of global variables are performed at run time. Initializors of global variables can contain functions defined in function files. For example, int globalvar = funcInFuncFile(10); int main() {...} *) changed. The constructor of a global variable of class type is called at runtime, instead of at parse time. A class, whose constructor calls functions, can be instantiated as global variables. *) fixed crash for for (undefined=0; undefined<19; ++undefined) *) fixed crash for switch(i) { case 1: firstStError; break; } Version 5.5.0 build 13251 April, 2007 *) fixed Ch_Initialize() for installation of Embedded Ch in a machine without regular Ch installed when an application is compiled using Borland C/C++ Compiler. *) fixed SymbolAddrByName(interp, "a") when 'a' is a computational array. It is handled the same as C array as a pointer to pointer to type. *) fixed memory leak for Ch_SetVar(interp, "s", CH_STRUCTTYPE, "tag", &s); Version 5.5.0 build 13241 March, 2007 *) fixed prompt crash for evaluation of expression in Mac OS X such as > 1+1 Version 5.5.0 build 13231 March, 2007 *) fixed Ch_DeclareFunc(interp, "int func(void);", funcptr); Version 5.5.0 build 13221 March, 2007 *) added int Ch_DeclareVar(ChInterp_t interp, const char *declaration); int Ch_DeclareFunc(ChInterp_t interp, const char *funcprototype, ChFuncdl_t funcptr); int Ch_SetGlobalUserData(ChInterp_t interp, ChPointer_t userdata); ChPointer_t Ch_GetGlobalUserData(ChInterp_t interp); Ch_DeclareVar() declares variables and functions with the system scope of __declspec(global) in Ch space. Ch_DeclareFunc() declares a function with the system scope of __declspec(global) in Ch space which call a C function in the binary space. Ch_SetGlobalUserData() sets the global user data. It is useful when multi Embedded Ch engines are invoked. Ch_GetGlobalUserData() gets the global user data. *) fixed preprocessing directives with a continuation line at the beginning of a function file. #define MACRO(a,b) (a+b)* \ (a-b) int funcFile() { *) changed the location of the distribution of dynamically loaded lib chmt#.dl in Windows from EMBEDCH_HOME/bin/chmt#.dl to EMBEDCH_HOME/extern/lib/chmt#.dl so that they are located in the same location for all platforms. Version 5.5.0 build 13211 March, 2007 *) fixed Giving an error message for registering a local function for atexit(). *) fixed Ch_AppendParseScript() crash when a variable declaration failed. *) fixed the deadlock for Ch_Initialize() when it fails multiple times in Windows. *) fixed the bug for the case of void Func(void (*func)(float fa[])) void f(float *pf); Func(f); *) fixed the default int type for const n = 10; register r = 10; volatile v = 10; Version 5.5.0 build 13191 March, 2007 *) fixed Ch_Initialize(&interp, option) when option is not NULL. Version 5.5.0 build 13181 March, 2007 *) fixed the return value of Ch_Abort() and abort a program with main(). Version 5.5.0 build 13161 March 6, 2007 *) updated Ch_Abort(). *) fixed Ch_Initialize() for installation of Embedded Ch in a machine without regular Ch installed. Version 5.5.0 build 13151 March, 2007 *) added new API Ch_Version() to obtain the version info for Embedded Ch. Version 5.5.0 build 13141 March, 2007 *) modified Ch_Abort() in Embedded Ch so that it can be called to abort the execution of a Ch script in a different thread. Version 5.5.0 build 13131 February, 2007 *) disbaled step-by-step debug during program parsing for _stop(). *) fixed Ch_AppendParseScript(interp, "int a;\ \n\ double d;"); Version 5.5.0 build 13121 February, 2007 *) fixed Ch_AppendParseScript(interp, "int a\n"); *) fixed shape(streval(str)) *) updated usleep() in Windows to behave the same as in Unix Version 5.5.0 build 13111 February, 2007 *) fixed pow(integer, integer). It will return a double instead of integer. Version 5.5.0 build 13101 January, 2007 *) fixed the debug function _stop() skip the debug of header files and multiple appearance of the same statement during debugging. Version 5.5.0 build 13091 January, 2007 *) added function va_tagname() in stdarg.h to obtain the tag name if the variable argument is struct/class/union type. *) fixed the return data type of va_datatype() in stdarg.h when the variable argument is struct/class/union type of CH_STRUCT*TYPE/CH_CLASS*TYPE/CH_UNION*TYPE. *) fixed the prompt display for a function of void type and an expression of computational array type. It will not display extra empty line. > func() output from func() > Version 5.5.0 build 13081 December, 2006 *) updated numerical functions fsolve() linsolve() inverse() cinverse() pinverse() with argument of assumed-shape array [:] instead of array of refernece [&]. *) added functions oderk() for solving ordinary differential equations. Function oderungekutta() is obsolete, use oderk(). *) added function eigen() for finding eigenvalues and eigenvectors of a matrix. Function eigensystem() is obsolete, use eigen(). *) added function clinsolve() for solving a system of complex linear equations. Version 5.5.0 build 13071 December, 2006 *) added functions lindata() and logdata() in numeric.h. Function calls lindata(x0, xf, a) logdata(x0, xf, a) to replace linspace(a, x0, xf) logspace(a, x0, xf) These two functions are obsolete for now. But these function names will be re-used for other purposes in the future. *) fixed CPlot:getSubplot() in Unix *) added member functions for CPlot class in chplot.h CPlot::func2D(); CPlot::func3D(); for adding data for plotting using a function *) added function shape(a, index) to obtain extents for an array, in addition to the shape of the array. array int a[3][4]; array int dim[2] = shape(a); // dim[0] =3, dim[1] = 4; int m = shape(a, 0), n = shape(a,1); // m =3, n = 4; *) added arraycopy() in stdarg.h for copy arrays for variable number of arguments *) added three functions in stdarg.h for handling variable number arguments of array type va_datatype(), va_arraydim(), va_arrayextent(). The corresponding functions va_elementtype(), va_dim, va_extent() are obsolete. *) added ChType_t in stdarg.h for va_arraytype() and va_datatype(). *) added three new API for Ch SDK and Embedded Ch to obtain the total number of element of array Ch_VaArrayNum() in Ch SDK Ch_ArrayNum() in Embedded Ch SDK Ch_FuncArgArrayNum() in Embedded Ch SDK *) fixed for array a of type 'type a[3]', APIs Ch_VaDataType(), Ch_VaFuncArgDataType(), Ch_DataType(), Ch_FuncArgDataType(), will return the data type of 'type' instead of pointer to type 'type*'. *) fixed error message when a file is missing for #pragma import "missingfile.c" #pragma importf "missingfile.chf" *) fixed input of multi-byte languages such as Chinese and Korea at the prompt of a Ch shell. *) When a computational array with a large number of columns is printed into a file using fprintf(), the columns will not be wrapped. Version 5.5.0 build 13061 November, 2006 *) fixed command completion for a directory on Unix. For example, > some/directory/name/ *) support cross compilation of commands dlcomp and dllink in Ch SDK for Linux. *) added support of shebeng #!/bin/env ch or #!/usr/bin/env ch for Ch scripts *) support cross compilation of commands dlcomp and dllink in Ch SDK for Linux and Windows *) added system varibable _setlocale if the statement _setlocale = 1; is added in system startup file chrc or .chrc or _chrc, function setlocale(CL_ALL, "") will be called internally for handling multi-byte languages. *) disabled automatical support of multi-byte languages for Korea, Japanese, and Chinese by adding #pragma exec setlocale(0, ""); in CHHOME/config/chrc in Windows Version 5.5.0 build 13051 November, 2006 *) fixed string concatination with __FILE__, __DATE__, __TIME__ such as char s[] = __FILE__ "str"; printf(__FILE__ " has an error"); Version 5.5.0 build 13041 November 7, 2006 *) added automatical support of multi-byte languages for Korea, Japanese, and Chinese by adding #pragma exec setlocale(0, ""); in CHHOME/config/chrc in Windows *) added command zip.exe in Windows *) fixed calling a shell command multiple times with substituted command using $cmd $cmd $option1 $option2 Version 5.5.0 build 13031 October 26, 2006 *) added #pragma exec setlocale(0, ""); for multi-byte languages such as Japanese used in CHHOME/config/chrc Version 5.5.0 build 13021 October, 2006 *) fixed decimal point using '.' instead of ',' for European languages such as French. Version 5.5.0 build 13011 October, 2006 *) simplified the distribution code for Embedded Ch *) fixed CPlot::outputType(PLOT_OUTPUTTYPE_STREAM, "png color"); CPlot::outputType(PLOT_OUTPUTTYPE_STREAM, "png color") is deprecated. use CPlot::outputType(PLOT_OUTPUTTYPE_STREAM, "png") Version 5.5.0 build 13001 October, 2006 *) added surface mesh for 3D plot tracking coordinates of 2D plots using a mouse changing view angle of 3D plots using a mouse *) added support of Ch Professional Edition for QNX *) added Embedded Ch can be invoked from C/Ch/C++ scripts. Version 5.1.0 build 12781 September, 2006 *) added two examples on how to callback a C function in Embedded Ch from the Ch space described in Embedded Ch User's Guide. *) added new C99 feature of the variable argument list macro using the ellipsis notation. The identifier __VA_ARGS__ occurs in the replacement list is treated as if it were a parameter, and the variable arguments shall form the preprocessing tokens used to replace it. For example, #define debug(...) fprintf(stderr, __VA_ARGS__) debug("Flag"); debug("x = %d\n", x); results in fprintf(stderr, "Flag" ); fprintf(stderr, "x = %d\n", x ); Version 5.1.0 build 12771 August, 2006 *) fixed _pathext = stradd(_pathext, ";.ch") *) fixed macros __FILE__, __LINE__, __DATE__, __TIME__ so that they are defined when tested by #ifdef or #ifndef preprocessing directives, and operation defined(__FILE__). *) fixed string concatination with __FILE__, __DATE__, __TIME__ such as char s[] = "str1" __FILE__ "str2"; Version 5.1.0 build 12761 July, 2006 *) fixed argument of member function with class type of its own. For example, class Point { public: Point(); double Distance(Point other, Point &another); }; *) fixed int (func)(int i); typedef int(FUNC)(int i); FUNC *f2; *) fixed vsnsprintf(). Version 5.1.0 build 12751 June, 2006 *) fixed Ch_SymbolAddrByName(interp, "a") when a is an array. Version 5.1.0 build 12741 June, 2006 *) added the return type ChVarType_t for Ch_IsVariable() with the following values CH_NOTVARTYPE, CH_GLOBALVARTYPE, CH_LOCALVARTYPE, CH_FUNCPROTOTYPE *) fixed Ch_SymbolAddrByName(interp, "a") when a is an array. *) changed so that functions va_elementtype(), elementtype(), Ch_VaDataType() return the same value for the same data type *) fixed wide character and wide string for multi-byte languages *) fixed macros in CHHOME/include/locale.h *) fixed CHHOME/include/wctype.h *) added system variable _ignoretrigraph add _ignoretrigraph = 1; in _chrc or .chrc to ignore trigraphs. *) fixed plotting of 1/sin(x) *) fixed pkginstall.ch for installation of packages in C:/Program Files/Ch/package *) fixed int a[3][4], (*p)[4]; p=a; printf("a[2][3]=%d\n",*(*(p+2)+3)); Version 5.1.0 build 12721 April, 2006 *) fixed char *arg[]; (*arg)[index]; Version 5.1.0 build 12711 March, 2006 *) fixed pow(). It conforms to the C99 standard, except for the following cases: Function C Ch ----------------------------------- pow(1, NaN) 1.0 NaN pow(NaN, +/-0.0) 1.0 NaN ----------------------------------- For example, pow(-5.0, 0) = 1.000000 pow(5.0, 0) = 1.000000 pow(0.0, 0.0) = 1.000000 pow(-5.0, 0.0) = 1.000000 pow(5.0, 0.0) = 1.000000 pow(Inf, 0.0) = 1.000000 pow(-Inf, 0.0) = 1.000000 pow(0.0, 0.0) = 1.000000 pow(NaN, 0.0) = NaN pow(1.0, NaN) = NaN *) added demos for kbhit() function in Windows C:/Ch/toolkit/demos/Windows/demos/kbhit.c Version 5.1.0 build 12701 March, 2006 *) changed generic function recv() to regular function. *) fixed typedef int BUF[100]; BUF *p; BUF a; int b[10][100]; p = &a; p = b; /* fixed the bug here */ *) fixed int (*p)[100]; int buf[3][100]; p = buf; (*p)[1]; /* fixed the bug here */ *) fixed If the built-in command "cd" fails, the value of _status for the command is 1 Version 5.1.0 build 12691 March, 2006 *) fixed int a, b, c, d, e, f, g, h, i, j, k; k = a ? b++, c : d ? e++, f : g ? h++, i : j; *) fixed using format "%d" for negative value of short type char str[90] ; short s = -10; sprintf(s, "%d", s); *) fixed a += a -= a*a; *) fixed casting from a small array to a big array, the remaining part is padded with 0 > array double a[3] = {1,2,3} > (array int [2])a 1 2 > (array int [4])a 1 2 3 0 *) fixed giving an error message for an extra } in code. *) fixed memory leak for a multiple return statements within if-statement or switch-statement block. Version 5.1.0 build 12681 March, 2006 for Windows *) fixed a bug in typedef for function type with argument of array type int (*FUNC)(int a[2], int b[]); typedef FUNC fun; Version 5.1.0 build 12671 February, 2006 *) fixed memory leak for a single return statement within if-statement or switch-statement block. *) added inet_aton() in supported platforms such as Linux, HPUX, and Mac OS X. *) fixed CLOCKS_PER_SEC for time.h in Windows. *) added a numerical function oderungekutta() for solving ODE. odesolve() is obsolete and will be phased out. Version 5.1.0 build 12661 December, 2005 *) fixed a bug for handling of element of array of string_t as a function argument. Version 5.1.0 build 12651 December, 2005 *) fixed the bug for system() in Ch v5.1.0.12641 Version 5.1.0 build 12641 December, 2005 *) fixed memory leak for struct tag { int a[3]; }s, *sp; using s.a or sp->a as an operand or argument for generic functions. *) fixed the crash for struct tag { int a[3]; }s; *(s.a) = 2; Version 5.1.0 build 12631 November, 2005 *) fixed memory leak for (type *)s.arrayfield; (type *)sp->arrayfield; *) fixed bugs for cout, cin, cerr for the first syntax error followed by statements with correct syntax, such as cout << "error cout << "ok" Version 5.1.0 build 12621 November, 2005 *) fixed bugs for readline() *) fixed crash for "if(a==)) {a = 10;}" and "while(a==)) {a = 10;}" Version 5.1.0 build 12611 November, 2005 *) fixed atoi() for int f(){ if() ... else return x;}; Version 5.1.0 build 12591 October, 2005 *) fixed (double)(-1) and dblvalue=-1 etc. Version 5.1.0 build 12581 October, 2005 *) fixed cp-rfp as cp -rf in pkginstall.ch for Windows. Version 5.1.0 build 12581 October, 2005 *) fixed memory leak for a return statement inside a block with local variables. *) fixed memory leak for calling function with multiple arguments in Embedded Ch using Ch_CallFuncByNameVar(). Version 5.1.0 build 12561 October, 2005 *) fixed memory leak for ptr += ivalue and ptr -= ivalue. Version 5.1.0 build 12551 October, 2005 *) updated CHHOME/config/vim/_vimrc for handling tab of other file types. *) added size_t strlen(const char *s); in string.h and strlen.chf for generic function strlen(). *) fixed int_val = unsigned_val casting when unsigned_value is large Version 5.1.0 build 12541 October, 2005 *) updated inttypes.h with macros define in C99 Version 5.1.0 build 12541 October, 2005 *) fixed pkginstall.ch for copying header file dir without warning. *) fixed processing character '\r' in code for Ch_AppendRunScript() and Ch_AppendParseScript(). *) added /sw/bin to _path and /sw/share/man to environment variable MANPATH by default for Mac OS X *) added demo examples for using Embedded Ch with GUI for VC++ 6.0 and .NET Version 5.1.0 build 12531 September, 2005 *) Added Embedded Ch API int Ch_Abort(ChInterp_t interpi); *) added macro CH_ABORT for handling Ch_Abort() in Embedded Ch. *) added #pragma package _path <name> #pragma package _fpath <name> #pragma package _ipath <name> #pragma package _lpath <name> #pragma package _path "name" #pragma package _fpath "name" #pragma package _ipath "name" #pragma package _lpath "name" *) support Ch SDK for MingW C/C++ compiler in Windows *) support Embedded Ch SDK for MingW C/C++ compiler in Windows *) added the command path /sbin to the system variable _path for Unix by default. *) updated help command *) fixed crash for if(cond) badcode here {} while(cond) badcode here {} for(init; cond; expr) badcode here {} *) updated CHHOME/lib/libc/sprintf.chf for generic function sprintf() *) separated Ch GTK+ as an add-on Ch package *) fixed 22e12345678986954869058609 *) fixed calling Ch function with arugment and return type of string_t from Embedded Ch *) changed the error message format. *) fixed bug for Ch_SetVar(interp, "s", CH_STRUCTTYPE, "tag", &s); *) updated Ch_AppendScript() and Ch_AppendScript() can handle script with header files and macros using preprocessing directives Version 5.0.3 build 12351 July, 2005 *) fixed c2chf to handle rettype func(enum type_t); rettype func(struct type_t); added an option -s to handle a function return struct type which is typedefed. For example, c2chf file.h -s structtype_t -s structtype2_t added an option -l to handle a function with variable number of arguments. For example, c2chf file.h -l func vfunc *) updated chsdk.pdf Version 5.0.3 build 12341 July, 2005 *) fixed c2chf in Ch SDK to handle function with arguments of interp and varg. *) fix processhfile.chf with { in extern "C" \n { . Fixed processhfile.chf for function of agument type of "const enum" Fixed to handle inline functions. Fixed to handle global variables. *) modified C:/Ch/toolkit/include/gtk/gtk.h in Windows by default with #define GDK_DISABLE_COMPAT_H *) fixed putenc() as putenv() in C:/ch/config/_chrc.sample_win Version 5.0.3 build 12331 June, 2005 *) fixed struct tag func1(type arg), fuc2(); *) fixed pkginstall.ch in Unix *) fixed CHHOME/include/arpa/inet.h *) support Ch and toolkits in LinuxPPC on Power architecture. *) added ChVaList_t data type in ch.h for variable number of arguments in Ch SDK and Embedded Ch, instead of using va_list. *) fixed c2chf for argument name of ap such as int funct(int ap); *) fixed Sleep() in Windows. Version 5.0.1 build 12251 May, 2005 *) fixed int_value = (unsigned_int_value) - (int_value); *) fixed struct { int size; } z[1]; i = z->size; Version 5.0.1 build 12241 May, 2005 *) fixed int_value = -(unsigned_int_value); long_long_value = -(unsigned_long_long_value); Version 5.0.1 build 12231 May, 2005 *) added command pkginstall.ch for installation of Ch packages. *) for char s[5]; the datatype of s is treated as a pointer to char in va_elementtype(), Ch_DataType(), Ch_VaDatatype(), Ch_FuncArgDataType(). *) removed the obsolete function va_isarray() in stdarg.h Version 5.0.1 build 12221 May, 2005 *) updated select() so that it works in Windows *) updated embedch.pdf for Ch_Append*() and callchvla2d.c *) distribution of evaluation edition of Embedded Ch for all platforms. *) updated c2chf.exe in Windows without changing mode for .chf files. Version 5.0.1 build 12211 April, 2005 *) updated Ch SDK added rmcom command for removing C/C++ comments fixed processhfile(), it will remove comments first. updated c2chf *) fixed handling of comment /* /* comments */ *) added support of const member functions *) fixed strstr(str1, str2)+value when strstr() returns NULL. *) fixed. allow pointer arithmetic of p+value or p-value when pointer p is NULL. Version 5.0.1 build 12201 March, 2005 *) Make it easy to interface with packages built from C/C++ libraries. *) added member field verbuild in struct chinfo_t in chshell.h *) updated Unix utilities for Ch in Windows *) added macro LOAD_CHDL(module_name) in chdl.h *) updated ch2chf, by default, the handle is _Chfile_handle, instead of _ChFile_handle, for command c2chf file.h *) updated Unix utilities with djgpp compiled binaries. *) fixed error message for 'sizeof type' with ERROR: missing '(' and ')' in sizeof(type) *) suppressed a warning message for $comd/dir in command Version 5.0.0 build 12181 March, 2005 *) Ch SDK is bundled with both Ch Standard and Professional Editions in all platforms. *) Support multi-threads for Embedded Ch up to 500 simultaneously running Ch interpreters in an application. Sample source code that embed mutiple Ch interpreters into multi-thread applications using POSIX pthread and Windows thread are provided. All APIs in Ch SDK and Embedded Ch SDK need a valid interpreter argument. For example, Ch SDK API for Ch_Home() and Ch_VaStart() are changed from char* Ch_Home(void); int Ch_VaEnd(va_list ap); to char* Ch_Home(ChInterp_t interp); int Ch_VaEnd(ChInterp_t interp, va_list ap); The old programs with Ch API can be modified using a Ch script port47to50.ch *) added Embedded Ch API int Ch_ExecScriptM(ChInterp_t interp, const char *progname); int Ch_RunScriptM(ChInterp_t interp, char **argv); to process multiple Ch programs in a single instance of Ch interpreter. *) added Embedded Ch API Ch_IsVariable() *) support QNX 6.30 *) Updated all PDF documents so that table of contents, programs, and index are clickable with hyper references and links for convenient reading *) added and integrated more than 100 Unix utility programs from GnuWin32 for Windows. Ch has a total of over 200 Unix utility programs *) added built-in command 'exec' *) added directories "/usr/lib:/usr/local/lib:" to the environment variable LD_LIBRARY_PATH in Linux by default. *) added gif file format for plotting *) Added commands curl.exe and wget.exe in Windows. Commands curl.exe and wget.exe can retrieve files using HTTP, HTTPS and FTP. It is a non-interactive commandline tool, so it may easily be called from Ch scripts. the command can run as wget.exe http://xxx.com/file_name instead of opening a browser. *) added strtoll() and atoll() *) added function clock_t clock(); as a generic function *) added commented default setup for VC++ in _chrc *) updated 'which' command to display the first command, function file, header file, and value of an environment variable. *) updated sprintf() to handle the first argument of both types of pointer to char and string_t. *) updated select.chf to include header file sys/time.h *) updated c2chf for Ch 5.0 SDK and Embedded SDK API *) updated processhfile() and processcfile() for SDK *) updated c2chf for handling header file and output files with directories. updated command c2chf with option -o c dir_c -o chf dir_chf For example, c2chf dir/header.h -o c output/dir_c -o chf output/dir_chf *) updated CHHOME/include/ch/sys/wait.h for Linux for macros __WAIT_* *) updated sys/types.h with conditional typedef for unchar, ushort, uint, ulong. *) updated dlerror() as generic functions. Function dlerror() can be used to obtain error message during the initialization for global variables. *) fixed closing the file if Ch_ParseScript() fail to parse the script file. *) fixed using gdb when ch is used as a login shell. *) fixed ch -c[option] cmd option *) fixed abort() and exit() in Ch programs processed by Embedded Ch *) fixed bug for foreach using default delimiter such as foreach(toke,str) foreach(toke,str,cond) fixed bug for foreach when str in foreach(token, str) is a pointer to char. *) fixed crash for if(expr1) a-bad-single-statement1 else if(expr2) a-bad-single-statement2 else a-bad-single-statement3 *) fixed memory leak for computational arrays *) fixed memory leak for passing argument of string_t type *) fixed memory leak for class and array of class *) fixed casting operation for array int a[4] = {1, 2, 3, 4}; d = (double)a; array double b[4] = {1, 2, 3, 4}; i = (int )b; *) fixed i?ptr:0 and i?0:ptr *) fixed sprintf() and other C functions using argument of (int arg, ...) in Unix. *) fixed sprintf(), scanf(), `cmd` inside a finite loop in Windows. *) fixed passing a structure as an argument to a binary C/C++ function. *) fixed using an array of pointer to class in binary C++ space. *) fixed command line option with space for Embedded Ch char *argvv[]={ "C:/program files/cmmand.ch" "opt1 opt2", "opt3 opt4", NULL}; Version 4.7.0 build 11921 November, 2004 *) support new API in Ch SDK ChType_t Ch_VaFuncArgDataType(void *ap, int argnum); *) fixed warning message for passing int funcptr(int*) to int fun(int funcptr(void *)); for a demo in GTK+ *) fixed passing a function in function file to fun(int i, ...); *) added GetScrollInfo() and SetScrollInfo() for windows.h in Windows *) using 4 white space for tab in vim by default in Windows *) commented "set ruler" in _vimrc so that Ctrl+g displays the current line number and cursor position. *) changed alias for command 'ls' *) updated CHHOME/include/sys/mman.h for Unix and Linux for mbuff.h in RTLinux Version 4.7.0 build 11831 November, 2004 *) updated CHHOME/include/sys/mman.h for Linux Ch, Ch SDK and Embedded Ch Version 4.7.0 -- October, 2004 build 11821 Version 4.7.0 build 11821 October, 2004 *) added option -u for unbuffer the stdout stream mainly for handling I/O in IDE *) fixed structure/class with size over 32767 *) changed aliases for commands "which" and "ls" in Windows. Version 4.7.0 build 11711 October, 2004 *) fixed #define for floating point values Version 4.7.0 build 11701 October, 2004 *) For Ch SDK Changed Ch_VaIsArray() to Ch_VaArrayType() added data type ChType_t Changed CH_NOTARRAY CH_CARRAY CH_CARRAYPTR CH_CARRAYVLA CH_CHARRAY CH_CHARRAYPTR CH_CHARRAYVLA to CH_UNDEFINETYPE CH_CARRAYTYPE CH_CARRAYPTRTYPE CH_CARRAYVLATYPE CH_CHARRAYTYPE CH_CHARRAYPTRTYPE CH_CHARRAYVLATYPE *) For Embedded Ch Changed Ch_IsArray() to Ch_ArrayType() Changed Ch_FuncArgIsArray() to Ch_FuncArgArrayType() *) changed va_isarray() to va_arraytype() in stdarg.h Version 4.7.0 build 11641 October, 2004 ) added new API Ch_SetVar() in embedded Ch. *) fixed char array initialization char s[2][20] = {"aa","bb"}; Version 4.7.0 build 11631 October, 2004 *) changed the default prompt from "_cwdn> " to "_cwd> " Version 4.7.0 build 11623 September, 2004 *) fixed createpkg.ch with instruction for ch installpkg.ch <pkgname> *) fixed createpkg.ch with ch installpkg.ch <pkgname> instead of ch ./installpkg.ch <pkgname> *) updated installpkg.ch for handling license Version 4.7.0 build 11621 September, 2004 *) fixed function file as argument for atexit() Version 4.7.0 build 11611 September, 2004 *) fixed #pragma package <name> Version 4.7.0 build 11601 September, 2004 *) fixed #pragma package <name> *) Support 36 new APIs for Ch SDK and Embedded Ch SDK. Make Ch especially powerful to be embedded in C/C++ programs and easy to interface binary static/dynamical C/C++ libraries. You can find more information below regarding Ch SDK and Embedded Ch SDK. *) Modified to be consistent with C shell and other shells. a) changed event designator from $ to ! to be consistent with C shell in command shell. For example, > !cmd b) added $cmd for command in both command shell and program to be consistent with C shell. For example, $cmd option c) Treat a string literal at the begin of a program and command shell as a command. "ls" option d) added handling of command in a path with space using a string literal. > "/Program Files/package/cmd.exe" option *) added function pipe() in Windows int pipe(int fildes[2]); *) updated Unix utilities for Windows. Removed commands cpio.exe, printenv.exe, ln.exe in Windows. Added Unix utility programs date.exe and bzip2.exe in Windows *) Command gunzip in Windows is handled as an alias of "gzip -d". *) updated editor vim 6.3 from vim 6.2 for Windows. *) added commands createpkg.ch and installpkg.ch *) added execution of expression at runtime by a new pragma directive #pragma exec expr *) added the classic header file varargs.h *) Changed the default value for _pathext. The default value for _pathext is ".com;.exe;.bat;.cmd" in Windows and "" in Unix without ".ch". It can be changed in ~/.chrc for Unix or ~/_chrc in Windows. Ch commands should be typed with a full path including file extension .ch such as mycommand.ch *) changed the value for the predefined macro _STDC_ from 0 to 1 *) treated dlopen(), dlsym(), and atexit() as generic functions. Function dlopen() can be used as a rvalue in initializer for global variables. _dlopen() and _atexit() are obsolete. They can be replaced by dlopen() and atexit(), respectively. *) added function file transpose.chf so that function transpose() can be called directly from C functions using Ch SDK and Embedded Ch. *) added enum types with array types of CH_CARRAYVLA, CH_CHARRAYVLA for C and Ch variable length arrays in stdarg.h. *) added _sleep() for Windows to be compatible with .NET. *) added console I/O functions, such as getch(), etc., in CHHOME/include/windows/conio.h for Windows. *) added support of functions in function files for expressions in the following functions strparse() streval() *) added the classic header file memory.h *) added math.h in header file tgmath.h. *) added <stdint.h> *) Added system variable _cwdn for the current working directory name. *) changed the default prompt in Ch command shell to the current working directory name. _prompt can be setup in ~/.chrc or ~/_chrc without restriction *) added function readline() for all platforms *) more robust for handling (example, declaration will be handled properly when a script is wrong). *) updated libchplot.dl for Windows for CGI plotting. *) Added reentrant functions in header files grp.h and netdb.h for Linux *) Added wide character functions in header file wchar.h for Linux *) pow(0.0, 0.0) = 1.0 instead of NaN to be consistent to ISO C *) A generic math function returns a value of double type if its argument is an integral value. For example, sin(1) is double. modified ch.h in Ch SDK *) turn off some default warning messages for ch -n chcommand *) added /usr/share/man in Unix by default *) For CPlot::axisRange(minimum, maximum, incr), when incr is 0, the increment between tic marks is calculated internally. *) added member function CPlot::getOutputType() for plotting. *) changed built-in commands in command mode from debug, parse, run to chdebug, chparse, chrun *) fixed commands '..\cmd' and '.\cmd' in Windows. *) fixed command "echo \\" in Windows to display \ to be consistent with that in Unix. *) fixed command "echo \$43" in Windows to be consistent with that in Unix. *) fixed ./cmd when cmd is located in a directory with space in the path. *) fixed command.ch located in a "path with space" in Unix *) fixed \\$var \\\$var in variable substitution. *) fixed adjacent two variable substitutions in commands, such as command $(var)$(var2) command $var$var2 *) fixed variable substituion with @ command , such as command arg@address.com $arg *) removed the warning message for command > ch -n mycommand.ch when mycommand.ch contains variable suvstitution delimited by '\' such as command $target\*.arg *) fixed command with trailing ';' in Windows, such as command; command.exe; path/command option; *) fixed command with fullpath using '\' and option in Windows, such as \full\path\mycommand.exe option *) fixed command with relative path using '/' in Windows, such as cmd_path/command.exe *) fixed handlingl of code #!/bin/ch -g^M copied from Windows to Unix *) fixed pointer to pointer to function. *) fixed special case of preprocessing directive #define inside enum following a trailing ',', such as enum tag { a, b = 1, #define A D }; *) fixed LONG_MIN, LONG_MAX, and ULONG_MAX in header file limits.h *) fixed operators amd constants for long long and unsigned long long data types. *) fixed consistent handling of printf() function family using format specifiers "%lld" and "%llu" for long long and unsigned long long, respectively, across different platforms. *) fixed backslash problem in stringization using macro. For example, #define TEST(a) #a printf("1%s2\n", TEST(a\\b)); printf("1%s2\n", TEST("a\\b")); *) fixed bugs related to comments following a preprocessing directive, such as #ifdef A /* comment1 comment2 */ *) fixed porting code from Windows to Unix in preprocessing directives, such as #ifndef nothing /* comment1 \^M comment2 */ *) fixed #define TEST(a) #a printf("%s\n", TEST(\"\\)); *) fixed printf("%s\n", "x*??"); *) fixed crash of passing scalar values to pointer to char in function argumenet. Ex. atoi('d'); *) fixed crash of assigning scalar values to pointer to char. Ex. char *p = 10; *) fixed crash in a command shell for > for > do *) fixed handling multi-dimensional array for IO stream cin/cout/cerr cout << a[i][j] cin >> a[i][j] *) fixed a bug related to declaration of struct in case of #ifdef NOT_DEFINED struct tag #else typedef struct tag tagA; struct tag #endif { unsigned field1; }; *) fixed negation operator for short/char *) Fixed the dependence of Ch on libtermcap.so in Linux, which is not available in some Linux distribution. *) fixed a bug in initialization of pointer to function. *) fixed cin in C++ for input a string using a pointer to char char str[43], *sp=str; cin >> str; cin >> sp; *) fixed crash for bad code such as void f1(); int f1() { /* bad code right after the openning brace */ first_line_code_is_bad; } *) fixed strncat() for arg of string_t type. *) fixed "#include<header.h> the_code_in_the_same_line;" *) fixed select() in Windows so that time.h and winsock2.h. *) fixed CHHOME/include/windows/winsock.h for select(). *) fixed CHHOME/include/sys/stat.h for Windows. *) fixed sprintf(), sscanf(), `cmd` for regular users in Windows XP *) fixed sprintf() in Windows for IIS XP *) fixed libchplot.dl for IIS XP plotting *) fixed using printf and fprintf as pointer to function updated header files stdio.h iostream.h iostream *) fixed wsprintf() in Windows *) fixed permission for sprintf() and sscanf() in Windows 2000/XP in regular user account *) fixed symbolic link of command completion using tab key in command shell. *) fixed input across multiple lines at the prompt of Ch shell *) fixed resizing problem of Ch shell in Solaris. *) fixed multiple callback functions for glut in OpenGL *) fixed font for glut in OpenGL for Windows Changes for Ch SDK 4.7 *) added the following 9 new APIs for Ch SDK so that Ch can be easily embedded in C/C++ programs and interface with binary C/C++ static/dynamic libraries. int Ch_VaDataType(va_list ap); int Ch_VaIsFunc(va_list ap); int Ch_VaIsFuncVarArg(va_list ap); void *Ch_VaUserDefinedAddr(va_list ap); char *Ch_VaUserDefinedName(va_list ap); int Ch_VaUserDefinedSize(va_list ap); int Ch_VarArgsAddArgExpr(va_list *arglistp, const char *expr); char *Ch_SymbolNameByIndex(ChInterp_t interp, int index); int Ch_CallFuncByNameVar(ChInterp_t interp, const char *name, void *retval, va_list arglist); *) changed Ch_CallFuncByName() and Ch_CallFuncByAddr(). They need to have both dim and extents for each dimension for an argument of variable length array *) added support of functions in function files for expressions in the following API Ch_CallFuncByName() Ch_CallFuncByNameVar() *) deprecated some APIs in Ch SDK. Ch_VaElementtype() is obsolete, use Ch_VaDataType() Ch_VaStructAddr(va_list ap) is obsolete, use VaUserDefinedAddr() Ch_VaStructSize(va_list ap) is obsolete, use VaUserDefinedSize() Ch_GetSymbol() is obsolete, use Ch_SymbolAddrByName() *) added enum types with array types of CH_CARRAYVLA, CH_CHARRAYVLA for C and Ch variable length arrays in ch.h. *) updated commands c2chf, dllink, and functions processcfile() and processhfile() for building interface of Ch to binary C library. *) updated processhfile() in Ch SDK for handling repeated token such as extern "C" { ... extern int func(int i); *) updated c2chf to handle arg of unsigned long type. *) updated c2chf to handle function with return type of void. and arguments of type of variable number of arguments for libxml2 *) fixed handling function ending with "; " in processhfile() *) fixed the multiple function definitions for evaluation edition of Ch SDK and Embedded Ch SDK. Changes for Embedded Ch SDK 4.7 *) Support 9 new APIs in Ch SDK so that Ch can be eassily embedded in C/C++ programs and interface with binaryy C/C++ static/dynamic libraries. *) Added the following 27 new APIs for Embedded Ch int Ch_AppendParseScriptFile(ChInterp_t interp, const char *filename); int Ch_AppendRunScriptFile(ChInterp_t interp, const char *filename); int Ch_Close(ChInterp_t interp, ChFile_t fildes); ChFile_t Ch_Reopen(ChInterp_t interp, const char *filename, const char *mode, int fildes); int Ch_Flush(ChInterp_t interp, ChFile_t fildes); int Ch_SymbolTotalNum(ChInterp_t interp); int Ch_SymbolNum(ChInterp_t interp, const char *name); void *Ch_SymbolAddrByIndex(ChInterp_t interp, int index); char *Ch_SymbolNameByIndex(ChInterp_t interp, int index); int Ch_IsArray(ChInterp_t interp, const char *expr); int Ch_ArrayDim(ChInterp_t interp, const char *name); int Ch_ArrayExtent(ChInterp_t interp, const char *name, int index); int Ch_IsFunc(ChInterp_t interp, const char *name); int Ch_IsFuncVarArg(ChInterp_t interp, const char *name); int Ch_FuncArgNum(ChInterp_t interp, const char *name); char *Ch_UserDefinedName(ChInterp_t interp, const char *name); int Ch_UserDefinedSize(ChInterp_t interp, const char *name); int Ch_ExprCalc(ChInterp_t interp, const char *expr, int datatype, void *result); int Ch_FuncArgDataType(ChInterp_t interp, const char *funcname, int argnum); int Ch_FuncArgIsArray(ChInterp_t interp, const char *funcname, int argnum); int Ch_FuncArgArrayDim(ChInterp_t interp, const char *funcname, int argnum); int Ch_FuncArgArrayExtent(ChInterp_t interp, const char *funcname, int argnum, int index); int Ch_FuncArgIsFunc(ChInterp_t interp, const char *funcname, int argnum); int Ch_FuncArgIsFuncVarArg(ChInterp_t interp, const char *funcname, int argnum); int Ch_FuncArgFuncArgNum(ChInterp_t interp, const char *funcname, int argnum); char *Ch_FuncArgUserDefinedName(ChInterp_t interp, const char *funcname, int argnum); int Ch_FuncArgUserDefinedSize(ChInterp_t interp, const char *funcname, int argnum); *) added support of functions in function files for expressions in the following APIs Ch_ExprParse() Ch_ExprCalc() Ch_ExprEval(). *) Ch SDK APIs can be invoked without first calling Ch_RunScript(). *) fixed the return value of Ch_Initialize() for Embedded Ch. *) support Borland C++ compiler in Windows for Ch SDK and Embedded Ch SDK. Examples with source code of using Borland C++ compiler are provided. *) Provided examples with source code using Microsoft .NET and VC++. Ch Version 4.5.0 build 11461 for Mac OS X January 22, 2004 --------------------------------------------------------------------- *) updated to run in Mac OS X 10.3 Ch Version 4.5.0 build 11451 January 17, 2004 --------------------------------------------------------------------- *) Added file and command completion by tab in command shell. *) added history command retrieval feature in command shell in Windows. *) enabled QuickEdit and Insert Mode in command shell for Windows by default. *) added strparse(char *expr) to vadlidate the expression at the parsing stage. streval() is for evaluation at runtime. *) added private destructor for classes *) added a runtime error message for c->memfunc() if c is NULL *) member functions cannot be accessed after the object has been deleted. *) fixed dlopen(NULL, X) to return a handle for the original program in Solaris, Linux, Mac, Windows. In HPUX. dlsym(NULL, X) to find a symbol in the orignal program. *) added identifier __class__ for class name inside a member function. *) added identifier __class_func_ for class and function names inside a member function. *) added C++ using directive using std::cout; using std::cin; using std::cerr; using std::endl; using std::ends; using namespace std; updated CHHOME/include/iostream.h updated CHHOME/include/iostream *) Added current path . in _path for commands for Windows, _fpath for function files and _ipath for header files in CHHOME/config/chrc by default for all platforms. *) Add the following typedef for System V typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; *) Simplified interface with C++ classes in Ch SDK. *) Added 4 new APIs for Ch SDK *) Added 3 new APIs for Embedded Ch *) changed the default prompt to "ch-4.5> " *) fixed passing argument of FILE* type to functions in dynamically loaded lib in Windows. *) fixed identifier __func__ conforming to the ISO C standard. *) fixed using member functions as argument of pointer to function *) Fixed function semctl() in sys/sem.h *) fixed macro definition in array initialization such as int a[] = { #define MACRO(a, b) a, b, MACRO(2,3) NULL }; *) fixed macro definition with ... such as #define ARG(arglist) arglist int fun ARG((int i, int j, ...)); *) fixed function macro definition across multple lines *) Fixed #define P(arg) arg typedef void (*fp) P((int)); *) fixed When a function without its definition is called, it will display an error message, the program will not crash. *) fixed handling directories with space for cd such as cd "/program files"/dir *) added CHHOME/include/new *) fixed &a[N] to conforming the ANSI C standard. *) fixed strncpy(a+1, b, n); strncat(a+1, b, n) for array length check *) fixed p1-p2 when p1 and p2 are pointers to struct *) fixed *p++ = s; *++p = s; *--p =s; *p-- = s; when p is a pointer to struct *) fixed declaration of int *const*p; *) fixed startup for MandrakeLinux 9.0 *) fixed crash for bad statement char *p=new char[y]; when y is undefined *) fixed realloc(NULL, size) *) fixed ch.vim for keyword foreach *) added in stdlib.h and unistd.h extern char *optarg; extern int opterr, optind, optopt; *) fixed isnum() and iscnum() to return 1 for scientific notation "3E4" *) fixed iscnum() with conventional notation for complex numbers *) fixed ch -c "command option" for login shell in Linux *) fixed cmd $(expr_with_func()) *) fixed macro CHAR_BIT and LLONG_MIN, LLONG_MAX, ULLONG_MAX in limits.h *) fixed macro inside statement *) fixed token paste for hexdecimal numbers *) fixed bitshift under cout. *) added function prototype getopt() in unistd.h updated CHHOME/demos/lib/libc/stdlib/getopt.c moved CHHOME/lib/libopt/getopt.chf to CHHOME/lib/libc/getopt.chf *) fixed error message for NULL value for computational array of reference and pointer to computational array. Operation a==NULL or a!=NULL gives boolean value for pointer to computational or array of reference. controlling expression of if-statement and loops cannot be computational array. *) fixed atoc() with conventional notation for complex numbers *) Modified env var VIM to point to CHHOME/config/vim in chrc for Windows in CHHOME/config/chrc Changes for Ch SDK 4.5: *) Simplified interface with C++ classes. *) Fixed passing file handles, locales, and environment variables to dynamically loaded library in Windows. *) added new API Ch_ExprParse(char *expr) to vadlidate the expression at the parsing stage. Ch_ExprEval() is for evaluation at runtime. *) Added new API Ch_CppChangeThisPointer() changes 'this' pointer in Ch space to pointer to object in C++ space. *) Added new API Ch_CppIsArrayElement() tests if the destructor is called by an element of array of class. Changes for Embedded Ch SDK 4.5: *) Binary functions in the original application program with Embedded Ch can be exported without building a separate dynamically loaded library .dl file. *) Easy interface with binary C++ code, all objects are maintained in C++ binary space. *) Added 4 new APIs Ch_ParseScript() parses a script. Ch_ExecScript() executes the script parsed already by Ch_ExecScript(). Ch_AppendParseScript() appends a script to the existing script processed by Ch_RunScript(). Ch_AppendRunScript() appends and executes a script to the existing script processed by Ch_RunScript(). --------------------------------------------------------------------- Version 4.0.0 build 11291 August 20, 2003 *) added argument substituion for alias such as alias("find", "find . -name _argv[1] -print"); _argv[0] The first input word (command). _argv[n] The n'th argument. _argv[#] The entire command line typed so far. _argv[$] The last argument. _argv[*] All the arguments, or a null value if there is just one word in the command. *) modified handling of variable substitution in command shell (a) The variable substitution can be prevented by preceding the `$' with a `\', except within ``'s where it always occurs, and within `''s where it never occurs. (b) A `$' is passed unchanged if followed by a space character such as blank and tab as defined by function isspace(), or end-of-line. A variable can be enclosed inside a pair of braces such as ${var}, ${ENV}. (c) expression substitution $(expr) is still valid. *) modified handling of variable substitution in verbatim output block using fprintf. (a) The variable substitution can be prevented by preceding the `$' with a `\'. (b) A `$' is passed unchanged if followed by a space character such as blank and tab as defined by function isspace(), or end-of-line. A variable can be enclosed inside a pair of braces such as ${var}, ${ENV}. (c) expression substitution $(expr) is still valid. *) fixed atoc() *) fixed using member functions as argument of pointer to function *) fixed error message for NULL value for computational array of reference and pointer to computational array. Operation a==NULL or a!=NULL gives boolean value for pointer to computational or array of reference. controlling expression of if-statement and loops cannot be computational array. *) Updated following Unix commands in Windows chgrp chmod chown cp dd df du ln ls mkdir mv rm rmdir touch *) updated vi editor in Windows *) added vim editor (improved vi) with syntax highlighting for Ch and other languages. *) fixed format specifier "%%" and "%n" for scanf() function *) added getopt() in stdlib.h and function file *) fixed CHHOME/chrc for Mac OS X 10.2 and higher *) fixed sigset(signal, SIG_IGN) Version 3.7.0 build 11241 July 6, 2003 *) fixed assert(). Version 3.7.0 build 11231 June 28, 2003 *) fixed memory problem at exit when Ch is a login shell. *) fixed buf size checking for sprintf() *) added default MANPATH with /usr/share/man for Mac Version 3.7.0 build 11221 June 26, 2003 *) fixed print void * as string such as fprintf(fp, "%s", voidptr) for GTK+ book examples. *) fixed identifier not followed with '(' is not expanded as Function macro. *) updated OpenGL/glut example code *) updated GTK+ toolkit Version 3.7.0 build 11211 June 12, 2003 *) fixed f2c.h Version 3.7.0 build 11211 June 11, 2003 *) fixed while-loop bug Version 3.7.0 build 11201 June 5, 2003 *) fixed incremental embedded code *) fixed puts() and fputs() when the string is NULL Version 3.7.0 build 11191 May 28, 2003 *) fixed unsigned surfix after long surfix such as 34LU or 34llu *) By default, if environment varable MANPATH has not been setup, it will be set to CHHOME/docs/man:/usr/man:/usr/local/man in Unix. *) added that in Windows if the first line is one of #!CHHOME/bin/ch.exe #!CHHOME\bin\ch #!CHHOME\bin\ch.exe in addition to #!CHHOME/ch/bin/ch #!/bin/ch it will be treated as a Ch program, where CHHOME should be replaced by the home directory of Ch such as C:/ch or C:\ch. *) fixed streval() as an argument of built-in function shape(). *) Remove warning for assigning scalars to pointer to computational array array int (*p)[:], b1[2][3]; p = (array int [:][:])b1 p = 3 // no warning *) fixed member field of st_atime, st_mtim, st_ctim of struct stat in sys/stat.h in Solaris Version 3.5.0 build 11181 March 30, 2003 *) added scalar to computational array promotion for operator ./ as [s]./Charray for element-wise division. For example, 3.0./A Version 3.5.0 build 11171, March 25, 2003 *) fixed scanf() with a leading space such as scanf(" %*[^\n]"). *) Fixed passing member functions to function with argument of pointer to function. Version 3.5.0 build 11161, March 15, 2003 *) Fixed silient inconsistentcy in sizeof() operator between C and Ch. Version 3.5.0 build 11151, March 8, 2003 *) added scalar to computational array promotion for operators +, -, and = A+[s] [s]+A A-[s] [s]-A A = [s] Version 3.5.0 build 11141, March 2, 2003 *) fixed C99 VLA declaration int fun(int n, int a[*]); int fun(int n, int a[n]); *) fixed operator 'defined' at the preprocessing directive *) fixed. Using an open parenthesis `(' as the first token following the open brace of a function definition. *) fixed. Check the data type of built-in function shape(). *) fixed space and format specifier "%n" in fprintf() functoin family. Version 3.5.0 build 11131, February 11, 2003 *) make histogram() run faster *) fixed pow(1, -1) and pow(-1, -1) Version 3.5.0 build 11121, January 30, 2003 *) fixed NaN for conversion of array elements from complex to floating-point number for Windows. *) fixed conditional operator with double constants for Windows Version 3.5.0 build 11111, January 18, 2003 *) Commands mkdir and rmdir in Windows are Unix compatible for shell programming --------------------------------------------------------------------- Version 3.5.0 build 11111, January 10, 2003 *) added variable substitution within command substitution operation `cmd $var` for speedy Ch shell programming *) added Emac-like command-line editing in Unix/Linux/MacOS for interactive Ch commmand shell. Arrow keys can also be used to move cursors at the prompt for input command line. *) programs issued and ended with & in Windows will be launched as a background job as in Unix without blocking. *) fixed command ./cmd inside Ch programs *) added CHHOME/include/chdl.h for easy interface to dynamically loaded lib *) fixed bin in _ppath so that _ppath/package/bin will be added to env variable PATH for correct handling of packages *) char *p=NULL; srting_t s=NULL; printf("%s", p) and printf("%s", s) will print out nothing instead of (null) *) fix pow(computational_array, computational_array) *) fixed numerical functions combination() and factorial() for large values. The return type for these functions are changed from unsigned int to unsigned long long. *) fixed #define macro generic_function *) updated complexsolve.chf for handling small epsilon *) add macro S_ISDIR() in header file sys/stat.h for Windows *) added foreach.1 for "man foreach" --------------------------------------------------------------------- Version 3.0.0 build 11101, October 12, 2002 *) complexsolve.chf updated Version 3.0.0 build 11101, September 5, 2002 *) added CPlot::dataSetNum() Version 3.0.0 build 11101, September 5, 2002 *) added CPlot::dataSetNum() Version 3.0.0 build 11101, September 1, 2002 *) fixed pass float through varaible number arguments to C/C++ binary *) added #pragma remkey(key) to remove keyword key *) added remkey key in command mode to remove keyword key *) added functions in wchar.h for Solaris/Windows fwprintf() vfwprintf() wprintf() vwprintf() swprintf() vswprintf() *) added wsprintf() in Windows *) fixed wide character output in Windows Version 3.0.0 build 11091, August 27, 2002 *) initial release of Ch for Mac OS 10.1.3 *) fixed size of struct stat in sys/stat.h *) fixed sizeofelement() *) fixed stat(), lstat(), fstat() *) updated qrdelete(), qrinsert(), rsf2csf() demos and docs in chref.pdf *) added exercises for Ch User's Guide chguide.pdf *) fixed CHHOME/demos/lib/libc/sys/socket/client.ch for Linux Version 3.0.0 build 11081, August 18, 2002 *) fixed #define DFFAULT(val); int fun(int(*f)(int)DEFAULT(0)); *) fixed #if defined MACRO without parenthesis for MACRO *) fixed comment /*/// ... */ *) added qrdelete() and qrinsert() for Ch Pro *) added conio.h and its console I/O functions for Windows *) fixed Motif for Linux Version 3.0.0 build 11071, August 13, 2002 *) possible to install in /opt/ch for Unix/Linux Version 3.0.0 build 11061, August 3, 2002 *) fixed eigensystem() *) fixed "%s" and "%g" for printf() functions for metanumbers in Windows Version 3.0.0 build 11051, August 1, 2002 *) fixed #define _INC_WINDOWS in windows.h *) added command "X:" for change dir to X drive in Windows *) fixed struct tag {...} s; sizeof(s[0]); sizeof(*s) Version 3.0.0 build 11041, July 23, 2002 *) added long long added unsigned long long Version 3.0.0 build 11031, July 18, 2002 *) updated winsock?.h and socket.h netdb.h arpa/inet.h netinet/in.h for WinSock Version 3.0.0 build 11001, June 8, 2002 *) added Ch GTK+ *) added Ch OpenGL *) added Ch Windows in Windows *) added Ch X/Motif in Unix/Linux *) Embeddable *) Running multiple embedded Ch programs for professional/student editions *) added Ch Lapack *) updated numerical functions logspace(), linspace(), sort(), conv(), pow(), svd() *) updated CPlot::subplot() *) added logarithmic based plotting member functions CPlot::loglog() CPlot::semilogx() CPlot::semilogy() Version 2.1.0 build 10981, April 2, 2002 *) Can run toolkits better Version 2.1.0 build 10881, March 10, 2002 *) fixed dot command '. ./cmd' in Ch shell *) fixed cast operation (classname *) inside a member function *) for run embedded Ch Version 2.1.0 build 10871, March 8, 2002 *) fixed 3rd argument of fzero() *) added VA_NOARG in stdarg.h *) fixed va_count() Version 2.1.0 build 10861, Feburary 27, 2002 *) fixed atan2() with computational arg *) fixed elementtype(NULL) *) fixed mixed 2D/3D plotting error message for plotting Version 2.1.0 build 10851, Feburary 20, 2002 *) fixed conditional expression of non-integral types Version 2.1.0 build 10841, Feburary 18, 2002 *) fixed isinf() and isfinite() *) fixed cout, cin, cerr, endl in command mode *) fixed memmove() warning message Version 2.1.0 build 10831, January 25, 2002 *) fixed array for Ch Professional/Student Editions Version 2.1.0 build 10821, January 16, 2002 *) support Windows XP *) added CHHOME/include/chplot.h *) CHHOME/include/plot.h conflict with existing header file in Unix is obsolete *)added member functions for CPlot class data2DCurve(double x[], double y[], int n) data3DCurve(double x[], double y[], double z[], int n) data3DSurface(double x[], double y[], double z[], int n, int m) getLabel(int axis) getTitle(void) *) change member functions for CPlot class from contourLevels(array double levels[&]); polygon(array double x[&], array double y[&], array double z[&]); to contourLevels(double levels[:], ... /* int num */); polygon(double x[:], double y[:], double z[:], ... /* int num */); *) elementtype() can distinguish struct/union/enum *) added usleep() *) Add Unix utilities in Windows *) changed safe Ch from sch to chs and all related files and extensions .sch to .chs schrc to chsrc _schrc to _chsrc .schrc to .chsrc schlogout to chslogout schlogout to chslogout --------------------------------------------------------------------- Version 2.0.1 build 10801, October 24, 2001 --------------------------------------------------------------------- Version 2.0.0 in September 21, 2001 --------------------------------------------------------------------- Beta version 2.0.0 in April 21, 2001
HTML hit counter - Quick-counter.net