D++ Version History
Over the years as I worked on D++, I created various change logs for major releases. I have gathered all the version history I could find in my dusty D++ archives and organized them here. All of this info was originally published on the main D++ website, here on PageMac. Although they are not particularly useful anymore, I like to keep things like this around for nostalgia and for anyone else who might be interested in someone's early programming history!
D++ v4.3 - January 2012
After I went to college, I kinda started a C version of D++, then completely forgot about D++ for about 5 years. One Xmas break at home, I got nostalgic and checked out the state of the code. It was in an non-functioning state, but I had started something big. A significant change to the D++ engine that made it much more efficient. I ended up completing that change, and it works pretty well.
Change list:
D++ Engine (the DLL):
Significant update to RPN / expression evaluation. Previously, if you had an expression such as `mid(“hello”, 1+1, 3)` the RPN engine would not break this up. getFunctions would split it up and evaluate each argument separately. This is silly. I have revamped the RPN engine so that it processes the entire expression all at once. This also includes arrays (they used to be broken up by getVar, which would then run the engine again on the index expression to evaluate it). So, the RPN engine only executes once for each D++ statement.
Updated tokenizer to truly ignore whitespace and group functions and arrays properly for the RPN update
Added resizing for D++ console
Fixed copy/paste/select all keyboard shortcuts
Fixed a glitch where “False” was undeclared as a variable (had to do with the number of predefined variables)
Added variable “dpp.text”, which returns the current console text
Fixed various minor bugs
Simple Development Environment (SDE), v1.6:
D++ v4.2 Beta - January 2006
D++ 4.2 was a beta, incomplete update that I was working on through the end of high school. I was in the middle of some big changes, but they never got completed for this version.
Change list:
D++ Engine (the DLL):
Fixed C++ style comments
Added switch statements
Fixed exit_for so that nested loops aren't messed up anymore
Global variables can now be defined between functions (helps with includes)
Moved assignment operator ( = ) to RPN (this is BIG! now all expressions are evaluated in the RPN. this means everything except for commands and flow control are in the RPN) [slight speed decrease, but worth it]
Switched from using a “class module” (an object) for stacks to using flat arrays (slight speed increase)
D++ v4.1 - March 2004
D++ v4.1 has been a long-antipated release. There are many new bugfixes, functions, commands, features, and as well as loads and loads of other things that I am sure you will enjoy. Want to see D++ 4.1 in action? Check out the IRC server and have a chat with AzBot… a fully functional IRC bot written in 4.1.
Change list:
D++ Engine (the DLL):
Lots of bugfixes / speed increases. Most notably is the “endif” bug, which will cause semicolon errors to occur after some statements (even when it is correct)
RPN If statements. If statements process better using the RPN system. That means you can use the && (AND) and || (OR) operators. This is a HUGE advantage.
New functions: here are a few:
join(array, [delimiter]) ← Joins an array and returns a string. Optionally add a delimiter between elements.
find_element(array, search) - Find an element within an array (case insensitive).
rnd_element(array) - Pick a random element from an array.
inarray(array, search) - Returns true or false if the element is in the array.
copyfile(source, destination) - Copies a file.
makedir(dirname) - Creates a new directory
rename(oldfile, newfile) - Renames a file
A few others, I can't remember. ;)
New functionality
~main()
Runs at the end of the program.
error(type, text, proc, char)
Occurs when normally you would get an error box. Now you can have your own error handling code. Unfortunately, it DOES exit the current procedure where the error occurred. (had to happen)
Fixed variable ownerships, so recursive functions now work
Fixed variable declarations so eventually the program doesn't bogg down with 1000 blank variable slots. Thanks to AzBot for helping me fix this one! :)
Simple Development Environment (SDE):
D++ v4.0 - October 2003
D++ v4.0 is a MAJOR update. That's why I jumped from 3.2 all the way to 4.0 But this is for a very good reason. D4 is almost a complete rewrite of the D++ engine. You'll notice first when you open the source that there are now 6 modules instead of the usual 1, and a new class module. I have separated all of the different areas of code into their own modules so it's not only easier to work on myself, but easier for you to pick out the place in code you want to look.
Change list:
D++ Engine (the DLL):
Complete rewrite. I'll do my best to detail this.
Designed and implemented new RPN (reverse-polish notation) engine. This is not just a normal mathematical engine, but it is now the core of D++; it handles all expressions, functions, strings, everything that gets evaluated. This addition is the primary advancement in D4, as it increased speed and stability, and most importantly, *flexibility*, so that even the most complicated expressions are handled perfectly. Works 10x better than previous crap-evaluator.
Redesigned variable and function system. Instead of having an array for the varnames, another for the values, another for the parent etc, a Type was used. This is not only faster (resizing 3 arrays is certainly slower than only 1!), but easier for use elsewhere. Speed increase: ~20 ms
Arrays designed and implemented. They work almost as perfectly as those in VB. See documentation for syntax and some very very minor limitations. This would have been impossible using the new variable method. Arrays can be dynamic.
Resigned function evaluation system (GetFunctions). Functions are evaluated through the RPN, so only one at a time, instead of D++ having to “search” for the functions. Arguments now use the typeVar which is easier for passing arguments, especially arrays.
Fixed the FindIfEnd function: works faster and better
Redesigned the For loop system. Again, a type was used. Speed increase: ~20 ms
Moved the ValidChar checking system in the main loop (ignores invalid characters). Speed increase: ~300 ms.
Modified the HandleExpression so it can account for arrays.
Added new functions console functions. (see docs for details)
Added file I/O support. (see docs for details)
Fixed Winsock to work a tad faster, but more efficiently.
Other stuff I can't remember….
Simple Development Environment (SDE):
Integrated Development Environment (IDE):
D++ v3.2 - March 2003
Released: 3/30/03
By: SqueakMac
www.pagemac.com
What's new in v3.2?
Well, there are two major changes in v3.2. The biggest is the addition of WINSOCK! That's right, by popular demand, WINSOCK is now available for use in D++! Check the new code examples to see how they work. Documentation on them isn't currently available, but I'll get that up within the week.
Another thing you'll notice is the IDE. I've added a procedure combo (it's handy now with winsock), and themes! There are two themes currently. The original theme, and a new, cleaner one I made.
IMPoRTANT! FOR some reason, I got a really ugly bug in the syntax checker. (unrelated to winsock, actually). I have no idea where it came from, and was unable to fix it. I'll make an update to fix it later when I have time. For now, debugging was disabled.
Here's a change list:
DLL:
Added new functions:
getconsole() [returns console's text]
setconsole(text) [sets the console's text]
setstart(start) [sets the selStart of console]
- Fixed a minor bug in dSplit.
- Fixed a bug that prevented the exponent ('^') operation.
- Fixed a bug with FOR loops.
IDE:
Added Theme support.
Added function combo.
Fixed links - they all launch correctly now.
Fixed download links. They now download from the PageMac server.
-
Added “PageMac Forums” under help.
Got rid of that annoying syntax highlighting thing. The position got all messed up. So now it displays the entire function… works a LOT better.
Improved syntax highlighting.
Added two new code examples.
D++ v3.1
What's new in v3.1?
Advanced Syntax Highlighting - this is syntax highlighting is like VB's, where only what has changed is highlighted.
Complete Debugger - the debugger has been fully upgraded to fit with functions
Full Rich Text Help File - Rewritten help file with tables, colors, and more, making it much easier. Searching has has also been improved. Simply highlight something, press F1, and it will search for you.
More Examples - Four new examples have been added to help teach you the D++ syntax.
Error Identifier - In the DLL, an improved error reporting system has been installed. When you run your program, if the IDE does not catch an error, the DLL will report it to you, telling you exactly what the problem is, where it is, and what function it is in.
Better All Around - The IDE, Linker DLL, and Security DLL have all been improved. Bugs have been removed, and they have been optimized for maximum performance.
IMPORTANT NOTICE!
Please download the latest version of D++ IDE at:
http://squeakmac.tripod.com/dppdownloads.html
Older D++ Versions