|
From: Peep P. <so...@us...> - 2004-07-21 12:13:23
|
Update of /cvsroot/agd/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11107 Modified Files: BUGS NEWS TODO ChangeLog Ideas Log Message: Bing, changes\! Index: NEWS =================================================================== RCS file: /cvsroot/agd/server/NEWS,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- NEWS 7 Jun 2004 15:50:19 -0000 1.12 +++ NEWS 21 Jul 2004 12:13:09 -0000 1.13 @@ -1,9 +1,10 @@ Changes in 0.0.3: + * Arrays! * Renamed interactivep() to interactive() * Locals can now be defined in the middle of code. * dfun platform() changed to a preprocessor macro __ARCH__, version() to __VERSION__. - * New dfuns: throw() + * New dfuns: throw(), users() Features in 0.0.2-3: * Real string ranges like string[0..4] Index: BUGS =================================================================== RCS file: /cvsroot/agd/server/BUGS,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- BUGS 7 Jun 2004 15:31:21 -0000 1.12 +++ BUGS 21 Jul 2004 12:13:09 -0000 1.13 @@ -1,9 +1,7 @@ Currently known bugs: - - src/options and src/compile_options.h don't honor $prefix. - Could use a shell script and sed to do substitutions. - But not that important, I guess. - crashes on Solaris/SPARC with a SIGSEGV somewhere between lines 190 and 199 in net.c (don't have gdb on that host). Could this be the wretched inet_ntoa() problem? - on 64-bit, the interpreter fails miserably - I think the code pointer (int *cp) is incremented by 4 bytes, when it should be incremented by 8. + - select() just blocks after a player receives a runtime error Index: TODO =================================================================== RCS file: /cvsroot/agd/server/TODO,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- TODO 20 Jun 2004 14:05:16 -0000 1.23 +++ TODO 21 Jul 2004 12:13:09 -0000 1.24 @@ -1,16 +1,40 @@ Not necessarily in order of importance. '!' means first-priority, -'?' means trivial and not really important. +'?' means trivial and/or not really important. '<' means low priority + - Runtime token positions (aka line number information). + How to do it. Just like in LPMUD. program_t->line_numbers is + an array with the same length as there are lines. Each + element contains the index into the code array at which + the line begins. To find a line number using cp: + get offset into code (cp - code), loop through line_numbers + while our offset is bigger than the element in line_numbers. + If offset is smaller or equal, it means that it must be on + the current index. + + - profiling memory usage - find out if variables are really freed and if they're + being overduplicated or something. + + - everything to do with arrays, notably: + - operators: + & &= + - call_other on an array + - foreach() + + - dfuns + delete + member_array + explode, implode + save_object, restore_object + crypt + - allow 'string foo; foo[0]="a";' - sprintf and printf - Interpreter. ? F_PUSH_NUM_INT <constant> <number> - ? F_POP_N <number> - pops <number> elements off the stack < runtime() for dfuns (doesn't display line numbers) - < display stack trace (with line numbers and functions) when getting a runtime error lang.y: ! break, continue @@ -45,16 +69,14 @@ - allow both .c and .lpc for file extensions (/usr/bin/file could recognize LPC, and editors can turn on syntax highlighting automatically) - - Runtime token positions (with the F_NEWLINE operator). - keep interactive objects in a separate linked list, and make shout act on that list - LPC: - ! arrays (T_ARRAY) - - foreach(), switch() + - switch() - all of the operators (/doc/lpc/operators) - ',' - this takes some serious grammar-hacking, because comma as a function call argument is a separator for expressions. - mixed type - - string slices (ranges) + - string slices ! assigning to slices (F_SLICE_LVALUE etc.) - Check if assigning too long a string. * m.. @@ -72,32 +94,25 @@ warnings low-warnings no-warnings - - #define name value - - #define name(x) value x - - #include, #ifdef, #else, #endif - #if - defined() - have_dfun() - !, &&, || - - #elsif - predefined names: - #define __AGD__ 1 - #define __VERSION__ PACKAGE_VERSION - Also possible: - #define __AGD_MAJOR__ 0 - #define __AGD_MINOR__ 0 - #define __AGD_SUBMINOR__ 2 - #define __AGD_PATCHLEVEL__ 3 - But these are quite pointless at this time. - #define __ARCH__ PLATFORM - #define __HOST__ the return value of gethostname() - #define __AUTHORS__ ? :) + __HOST__ the return value of gethostname() + __AUTHORS__ - character encoding inside strings: - decimal: \nnn - octal: \0nnn - hexadecimal: \0xnn - binary: \nnnnnnnnb - - multiline strings + - multiline strings (like this: + string s = "@@@FOO + blah + blah + blah + FOO"; + Or however it's done elsewhere. ? Better function lookup table (prog->nametable)? O(1) would be nice. @@ -106,16 +121,14 @@ - log using lib's facilities (master::log()?) - different prefixes have different debuglevels - save to different files - ? only report undeclared identifiers once (this is generally a Bad Thing) - warn about unused variables - initialization of global variables - dfun overrides, :: operator + ? check for lib root and folder of debug log with access() and exit gracefully if it fails. - ? if we crash while running apply(master::crash), then we should rerun with debugging on + ? IPv6 support? - ? Supply a malloc implementation with statistics (a la MudOS)? - ? Statistics and profiling ? Some work could be done on i18n. For example, allow for multilingual yyerror-messages. One way would be a master::error_msg() apply that takes a numeric code of the error message and should return the string. Mudlib coders can code in their own language. Index: Ideas =================================================================== RCS file: /cvsroot/agd/server/Ideas,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- Ideas 8 Jun 2004 20:18:43 -0000 1.9 +++ Ideas 21 Jul 2004 12:13:09 -0000 1.10 @@ -1,5 +1,9 @@ This file contains features that will be or will be not in AGD in the future. lpc: + * The traditional naming conventions of LPC should be rationalized. + this_player() and this_object() are a bit too long to type out + each time. Just player() and this() or self() should suffice. + environment() -> env() etc, too. * superscope global variables. Maybe called world scope? i.e. global foo; - then can be accessed from any object. And this_object/this_player are driver-defined world globals. Index: ChangeLog =================================================================== RCS file: /cvsroot/agd/server/ChangeLog,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- ChangeLog 20 Jun 2004 14:05:16 -0000 1.21 +++ ChangeLog 21 Jul 2004 12:13:09 -0000 1.22 @@ -1,5 +1,14 @@ 0.0.3: ---------------------------------------------------------------------------- +2004-06-23 + * compile.c,lang.y,interpret.c,vars.c: + operator for arrays + * compile.c: fixed adding definitions for prototypes - their code wasn't + added + * main.c: startup_time is set before compiling master so that it could + use uptime(). + * lang.y: fixed popping locals after leaving block +2004-06-22 + * interpret.c,lang.y: arrays basically work. 2004-06-15 * interpret.c: TAKE_SLICE is now a function instead of a macro GET_ARGS changed: arg[0] is now the FIRST argument and |