World of D++
01.17.2012 - Hey look, I got bored over the break and updated D++. Version 4.3 is out. Some pretty solid changes to the RPN engine.
01.29.2006 - D++ 4.2 beta relased. See this thread for details.
04.03.2004 - Finished the documentation, so check it out. Still need to add a few functions and commands. Also, I got a few script examples up temporarily.
03.14.2004 - D++ 4.1 is finally out! Download, download download, download!!! Docs and example scripts/libraries to be uploaded soon.
10.18.2003 - Got some of the docs up - commands, functions, and variables.
10.13.2003 - More of the site has been completed. Older D++ versions uploaded.
10.12.2003 - The downloads are up! You can now download D++ v4.0
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 evalute each argument separatly. 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 evaulate it). So, the RPN engine only executes once for each D++ statement.
- Updated tokenizer to truely 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:
- Removed the use of DPPSecurity.dll. All compiling is done within the SDE.
- Fixed various minor bugs.
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 occure 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, [delimeter]) <- Joins an array and returns a string. Optionally add a delimeter 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. Unfortunatly, it DOES exit the current procedure where the error occured. (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):
- Better document handling
- Fixed problem with Home key - it now works properly
- Added feature for INCLUDES. You can now include a file by placing #include(file.dpp) at the beginning of the file.
- Added easter egg
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 seperated 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 mathmatical 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):
- Designed SDE, made to work with D4.
Integrated Development Environment (IDE):
- The IDE has a long way to go before it will be released. It's going to be a lot better and won't jump around anymore. No release date planned as of yet.