Search Top Index
HELP NEWS.V12 A.Sloman Oct 1986 For most recent news, see HELP * NEWS April 1986 POPLOG VERSION 12 There are many new features described in the following news items, and in HELP * LISPNEWS and HELP * PLOGNEWS, including RATIOS, COMPLEX NUMBERS, a POPLOG WINDOW MANAGER, a much improved and almost complete COMMON LISP, various new library programs including LIB FLAVOURS (see TEACH * FLAVOURS), a large collection of bug fixes, rationalisation of the libraries, and a substantial performance improvement for PROLOG (up to 4.5 klips for 'naive reverse' on a Systime 8750). The POP-11 language has been substantially extended (partly by adding facilities required for common lisp), including full lexical scoping and non-local goto. See REF * NUMBERS and REF * VMCODE especially. There will shortly be a POPLOG USERGUIDE and a VED USERGUIDE available as manuals, and a VED PROGRAMMER'S guide is in preparation. ----------------------------------------------------------------------- May 1 (Aaron Sloman) VEDRANGEREPEATER sometimes produced spurious characters at end of 'current' line. Fixed by calling vedtrimline. See HELP *VEDPROCS /vedrangerepeater Apr 30 (Aaron Sloman) --- fixed lib regions (it previously used 'lambda ... end' instead of 'procedure ... endprocedure) --- ved_diff used not to call vedsetlinesize or vedtrimline where it should have. Now fixed. (See HELP * DIFF) --- HELP * VEDCOMMS updated (ved_what and ved_diff) --- Other HELP files updated: *VARS *ARRAYS *NEWARRAY *NEWANYARRAY Apr 23 (John Willliams) --- VED_SMR (sort marked range) generalised: if argument is '-f' it "folds" uppercase into lower case. See HELP *VEDCOMMS/ved_smr Apr 22 (Mark Rubinstein) --- CANCEL will no longer cancel protected words. See HELP * CANCEL. Apr 22 (John Gibson) --- A major bug has been found in some of the procedures concerned with device output. Under some circumstances, a call of -syswrite- on a device would have caused the corruption of the structure immediately following the device in memory. This bug (which has been in all versions of Poplog since its earliest days) was almost certainly responsible for many of the unrepeatable crashes that happened from time to time in the past (crashes inside the garbage collector in particular). Needless to say, the bug is now fixed. Apr 20 (John Williams and Aaron Sloman) --- The old LISP system is being withdrawn. See HELP * LISP The old HELP LISP is now $usepop/pop/lsp/lisp. The directory $usepop/pop/lsp/* (UNIX) or USEPOP:[POP.LSP...] (VMS) will be removed from POPLOG Version 13. Apr 20 (Aaron Sloman) HELP * VED_WHAT describes an experimental enhanced mechanism for finding out about POP-11 or VED system procedures or variables. Apr 15 (Mark Rubinstein) --- LIB INSTANCE altered so that the undefaction procedure (if provided) will be called if the value of a "?" variable is an undef object. Previously it was only called if the identprops were undef. See HELP * INSTANCE. Apr 14 (Sak Wathanasin) --- HELP * PLOGNEWS updated Apr 13 (Aaron Sloman) --- HELP *INITIAL for VMS and UNIX updated and merged. (POPLOG initialisation overview files). NB: the comment on 'init.pl' files was wrong previously. --- New HELP files for LIB * VED_IMCSH (running C-shell from a VED window). See HELP *IMCSH *CSH_COMPILE *KILLCSH --- Environment variable $POPCOMPPATH extended to include $POPLIBLIB: (For running POP-11 with a parameter to invoke a file). --- LIB * VED_SOURCFILE: bug fixed and speeded up. Now finds exact match first. (See HELP *POPINDEX) Apr 11 (Aaron Sloman) --- DOC *SYSSPEC thoroughly updated --- REF *FASTPROCS brought up to date --- HELP files updated: *BEGINNERS *BITWISE *CONTENTS *HELPFILES *POPLOG *POPPROCS *SYSWORDS *UNDO *VEDCOMMS --- The default help file is now *BEGINNERS. *INDEX is now just a list of files. HELP *HELPINDEX is withdrawn. --- VED <ENTER> g can be used to examine help or teach files with section headers and table of contents in the form described in HELP * ENTER_G. See LIB * VED_G. Some related utilities: VED_HEADING can format POPLOG-style headers in a file, VED_INDEXIFY builds a table of contents for VED_G. (Use to create a 'temporary menu' for a long file.) Apr 6 (Ben Rubinstein) --- There is now a preliminary release of the POPLOG WINDOW MANAGER See HELP files: * PWM * PWMWINDOWS * PWMGRAPHICS Apr 6 (Aaron Sloman) --- HELP * POPVARS updated and reformatted. HELP * STRINGS extended. Mar 25 (John Williams) --- LIB *POPHOST now has two new fields, "machinetype", and "fullsitename". Also, the field "osversion" is now computed from the tail of the list SYS_OS_TYPE, and may differ slightly from what it used to be in some versions of POPLOG. Mar 22 (Aaron Sloman) --- ISENDSTRING takes two words or strings and tests whether the first is a final substring of the second. See HELP * ISENDSTRING. Mar 17 (Mark Rubinstein) --- (UNIX only). *SYSGETPASSWDENTRY will return a vector of information got from the 'passwd' file. NOTE (SUNS only). On Suns using the network 'yellow pages' passwd databases the network entry will be retrieved, but modifications to the passwd entry specified in the local 'passwd' file will not be shown. See MAN PASSWD(5). Mar 16 (John Gibson) --- The VED commands copy, d, mi, mo, ti, to etc, as well as the line deleting function now replace interactive-mode prompt marker characters with spaces (thus producing normal editable lines). --- (Unix Only) All files opened by Poplog now have the Unix 'close-on-execute' flag set automatically. This means that on a -sysexecute- all files will be closed, except that -sysexecute- unsets the flag for the three standard devices -popdevin-, -popdevout- and -popdeverr-. You can also supply a (non-empty) list of devices to be left open as an optional 4th argument to -sysexecute-. Mar 6 (Ben Rubinstein) --- VEDSUN, VEDWINSUN, and associated files and procedures reorganised. VEDSUN and VEDWINSUN are now in popvedlib; all other files are in $usepop/pop/lib/sun ("popsunlib"). LIB * POPSUNLIB added, which ensures that popsunlib is in the users popliblist. See HELP * VEDSUN, *VEDWINSUN. Previous version of VEDSUN is now LIB * OLDVEDSUN, with HELP * OLDVEDSUN Mar 6 (John Williams) --- Some minor bug fixes: IDENTTYPE now returns 0 for an untyped identifier, not "full". SYSPROTECT no longer mishaps if applied to a system identifier. SYSSYNONYM now checks that its first argument is an identifier. Also, synonyms are now 'local' to the current section. --- Most procedures that deal with identifiers (at either compile or run time) will now accept lisp symbols as well. Mar 6 (Mark Rubinstein) --- LIBRARIES. One of the changes introduced to POPLOG since Version 11 is that some considerable work has gone into sorting out the libraries. As a result some (although I am sure not all) files that are only relevant to the Sussex site or Sussex teaching have been removed from the publicly distributed libraries and many of the files that are only relevant to particular operating systems or configurations will only appear on those versions. All libraries should now have a standard (commented) header containing information about the file. The slot marked "file" will usually have a unix-type path specification beginning $usepop/master/C.???/... The part following 'C.' gives us an indication of which machines the file is relevant to. For most this will be C.all but some may for example be C.unix or C.vms. The rest of the path should specify where the file lives relative to '$usepop/pop'. So for example the file which bears the path '$usepop/master/C.all/lib/auto/record.p' should be the file '$usepop/pop/lib/auto/record.p' on your system. --- POP-2. Another change for POP-11 is a break from its ancestor POP-2. Previously effort was made for POP-11 to be compatible and many autoloadable libraries provided synonyms for POP-2 names. These have all been removed from the autoloadable library and replaced with the single compatibility library LIB * POP2. For details see HELP * POP2. If you are in the habit of using POP-2 procedures or names then you should load this in your 'init.p' file (see HELP * INITIAL). --- NEW LIBRARIES include an object-oriented programming environment loosely based on Zetalisp flavors (see TEACH * FLAVOUR for details). There is a new ved configuration for bbc computers with a vt100 emulation (see HELP * BBCVT100). LIB * CONTEXT by Allan Ramsay allows the saving of the state of chosen variables within set contexts. See HELP * CONTEXT. Mar 4 (John Gibson) --- Version 11.2. The Poplog virtual machine and the POP-11 compiler now support lexically-scoped non-local jumps. That is, a -goto- (or -go_on-) statement in a POP-11 procedure can reference a label which is anywhere within that procedure or a lexically enclosing one, e.g. define ismember(item, list); applist(list, procedure(x); if x = item then goto found endif endprocedure); return(false); found: return(true) enddefine; Similarily, all jump-type virtual machine instructions (GOTO, IFSO, IFNOT, AND, OR, GO_ON) can take labels that are anywhere in the nest of procedures for which code is being planted (including the current batch of execute-level code). See REF *VMCODE, and in particular the section 'Implementation of Non-Local Jumps' for a discussion of efficiency issues. Feb 20 (Mark Rubinstein) --- LIB PROFILE will now accept input from the same line as the command when run from LMR in VED. It will also print results in floating point format instead of as ratios. See HELP * PROFILE. Feb 19 (Aaron Sloman) --- VED fixed so that it will cope with situation where a file has been edited in the current directory, then directory changed, and VED invoked with a full path-name for the file, or the reverse situation. This involved changing VEDPRESENT (see HELP * VEDPROCS/vedpresent) to detect such situations. Feb 13 (Mark Rubinstein) --- VED_SS and VED_WW which allow caseless searching in ved, moved from local library to public. See HELP * VED_SS, *VED_WW, and also HELP * VEDPROCS/vedtestclsearch, *VEDPROCS/vedcllocate. Feb 11 (Mark Rubinstein) --- New procedure *EXPANDLIST will expand a dynamic list and turn it into a static list. --- SYSSORT, COPYTREE, NCREV, NCDELETE and FLATTEN all now work properly with dynamic lists. FAST_NCREV, FAST_NCDELETE and FAST_FLATTEN will not. Feb 4 (Mark Rubinstein) --- SYSTMPFILE fixed to use SYS_>< and so prevent funny names if POP_PR_QUOTES is true. Jan 31 (John Williams) --- Aled Morris' Cifer terminal conversion, LIB *VEDCIFER, is now available. This downloads code into the Cifer to make it support VED in a much improved fashion. See HELP *VEDCIFER, CIFERKEYS for more details. Jan 27 (Aaron Sloman) --- New directory $popdatalib = $usepop/pop/lib/data now contains data for library programs, e.g. edgepic, grammar1. Some of these used to be in other directories. --- POPUSESLIST altered to include $popdatalib. Jan 26 (Aaron Sloman) --- VED_LMR, <ENTER> L and <ENTER> L1 changed so that warning messages inserted in file when VEDLMR_PRINT_IN_FILE is TRUE are also shown on the screen. See HELP * VEDVARS /vedlmr_print_in_file --- LIB TIME altered so as to give more accurate results, and to work with 'load marked range' in VED. Jan 26 (Mark Rubinstein) --- Procedures attached to <ESC> / and <ESC> \ now give sensible ved errors if used before any searching has been done. Previously they mishapped. Jan 26 (John Williams) --- The procedure CHARTYPE has been renamed VEDCHARTYPE, and is now redefinable. It controls the recognition of text item boundaries for VED searching, and the WORDLEFT and WORDRIGHT keys. The old name CHARTYPE is still available as a synonym. Jan 26 (John Williams) --- The library procedure LAST has been extended to cope with dynamic lists, all vector classes, and words. See HELP *LAST for details. Jan 26 (Mark Rubinstein) --- ISSUBSTRING_LIM - fixed. Previously 'start_lim' arguments of false meant that the procedure always returned false. --- <ENTER> GS and GSR if given no arguments will redraw the previous search and substitute strings with the delimiter on the end. Previously there could be problems if the last character of the substitute string was a space. --- VVEDGOTOPLACE - minor bug fixed. Problems occurred when it was an illegal search string. --- VEDWIGGLE is now sensitive to a new variable VEDWIGGLETIMES. Default is 5, it can be set to a larger number to slow down the wiggling on fast terminals. --- VED_FILL and VED_JJ no longer mishap if VEDLEFTMARGIN is a procedure. --- DATAFILE can now record all items, including those with non printing characters (e.g. SPACE). Jan 20 (John Williams) --- PRWARNING is no longer locally bound by VED_LMR and related procedures that effect compilation in VED. Jan 20 (Mark Rubinstein) --- RECORDCLASS and VECTORCLASS macros are now sensitive to sections. They make a new key if the identifiers are not available in the current section. Jan 19 (John Gibson) --- POPLOG Version 11.1 supports the full range of number types and numerical procedures specified by Common LISP. The changes are summarised here; REF * NUMBERS (which replaces REF * ARITH) describes the new system in full. Listed by dataword, the system now has the six distinct number types: integer } biginteger } rational numbers ratio } decimal } floating-point numbers ddecimal } complex The major change that will affect existing programs is that dividing one integer by another with / now produces a ratio rather than a floating-point (except if the division is exact, when the result is an integer as before). Because you really want floating-point results (or because you find ratio arithmetic too slow), you may find it necessary to replace some integer constant divisors with floating-point values. Otherwise, the changes are upward-compatible with previous versions. As well as being constructed by the / operator, ratios can also be read in as literals by the itemiser. While the obvious way for ratios to print out would have been <int>/<int>, this format would have been unsuitable for the itemiser (owing to the problem of ambiguity with POP-11 operator syntax). It was therefore decided that ratios should both print and read as <int>_/<int>, e.g. 2 / 3 => ;;; evaluated ratio ** 2_/3 [1_/2 2_/3 -3_/4] => ;;; literal ratios in a list ** [1_/2 2_/3 -3_/4] A similar format has been adopted for complex numbers: since the binary operators for constructing these are +: and -:, the read/print syntax is the same with an additional '_', e.g. 2 +: 3 => ;;; evaluated ** 2_+:3 [1_+:2 2_-:3 -3.0_+:4.0 2_/3_-:3_/4] => ;;; literals ** [1_+:2 2_-:3 -3.0_+:4.0 2_/3_-:3_/4] See REF * ITEMISE for full details. Because the system now has full complex arithmetic, certain operations that used to give a mishap (e.g. -sqrt- applied to a negative number) will now produce a complex result. There are quite a few new procedures, listed below: predicates --------- isratio isrational isreal iscomplex integer & rational arithmetic ----------------------------- gcd_n lcm_n destratio numerator [autoloadable] denominator [autoloadable] complex operations ------------------ +: [operator] -: [operator] unary_+: unary_-: conjugate destcomplex realpart [autoloadable] imagpart [autoloadable] trigonometric ------------- phase [autoloadable] cis [autoloadable] sinh cosh tanh arcsinh arccosh arctanh bitwise integer procedures -------------------------- &&/=_0 [operator] &&=_0 [operator] testbit integer_leastbit integer_length integer_bitcount integer_field random numbers -------------- random0 floating-point utilities ------------------------ float_decode float_scale float_sign float_digits [autoloadable] float_precision [autoloadable] pop_float_radix [autoloadable constant] lib float_parameters [library] general ------- number_coerce In addition, the existing library procedures random (+ ranseed) round sign have been moved into the system. Jan 19 (Aaron Sloman) --- Undocumented use of characters .,#| in place of / for forward searching in VED removed. (Relic of wrong decision in 1981). --- VED_BACKSEARCH (<ENTER> \ and <ESC> \) fixed to find latest acceptable occurrence in the line, instead of first only. --- VED_DO provided for multiple commands on VED command line: <ENTER> do<c>command1<c>command2<c>command3 ... Commands are separated by any non-space delimeter character <c>. E.g. to search for FOOO and move down two lines: <ENTER> do;/FOO;ml 2 See HELP * VEDCOMMS/ved_do and LIB * VED_DO --- New utility SYSGETUSERNAME(<login name>) -> <user name | false> added to public library. UNIX ONLY. Jan 19 (John Williams) --- Bug in VED_LMR that previously caused POP_CHAROUT_COL to be VEDCOLUMN when it shouldn't has been fixed. Output into current file should now work. Jan 19 (Aaron Sloman) --- Updated documentation: HELP *DATASTRUCTURES HELP *VEDCOMMS HELP *VEDPROCS HELP *VEDSYSFILE HELP *VEDVARS --- VED procedures now check whether VEDSCREENWIDTH has altered, and if so change local structures automatically. This means that LIB * VED_LL can be simplified. --- VEDERROR altered to call MISHAP unless 'iscaller(vedprocess)'. --- VED and VED_NAME altered so that VEDERROR rather than MISHAP called if given a file in non-existent or protected directory. --- Bug in VEDBUFFEREXTEND fixed. Now, if appropriate, it saves the new buffer in the current file structure. Previously, changes could be lost as as a result of inadvertently hitting QUIT key, or exiting from VEDEDITOR, e.g. by calling SETPOP. --- VEDSEARCHLIST, default [], is now used by VED and VED_VED to search for user files, just as VEDHELPLIST is used by HELP. It can now be assigned to by users, e.g. in VEDINIT.P. (See HELP * INITIAL) VEDSEARCHLIST may consist of strings naming directories, or lists whose first element is a directory name, as explained in HELP * SYSSEARCHPATH, * VEDGETLIBFILENAME, * VEDSYSFILE. As a corollary various VED procedures can now take a list instead of a string for a file name, e.g. VEDEDITOR, VEDREADFILE, VEDGETFILE, VEDOPEN. The first element of the list is used as file name, and the remaining elements used to initialise global variables. VED_LMR has been adjusted to take account of the fact that VEDSEARCHLIST may have to be used to fined the output file. VEDPRESENT has been altered to use VEDSEARCHLIST, consistently with VED_VED. If VEDSEARCHLIST is FALSE or [], behaviour of VED should be exactly as before. --- * VEDOPEN can optionally be given TRUE as its final argument. In that case the new file-structure returned will also be put onto VEDBUFFERLIST, at the end. (Previously available, but not documented.) Jan 19 (Mark Rubinstein) --- VED_F altered so that it can cope with definitions of lvars and lconstant procedures and also improved so that it never gets stuck in a loop or fails to find definitions. --- VMS POPLOG. SYSFILEOK altered so that the string '][' is eliminated from file specifications. For example if disk$a is a logical name for disk$real[subdirectory.] then: sysfileok('disk$a:[user.mydir]file.p') => ** disk$real:[subdirectory.user.mydir]file.p --- VEDFILESELECT moved into the system. It has been slightly changed to show information more quickly if it can do so and if you have not typed ahead. It is also more sensitive to window and screen sizes. --- LIB VED_GO now removed. VEDFILESELECT is more sophisticated. --- SystemV UNIX POPLOG. LIB TERMIO installed for handling ioctl requests as specified by Unix manual termio(7). See HELP * TERMIO. Corresponds to HELP * IOCTL and the 4 IOCTL libraries for Berkely unix. --- VEDREADLINE removed from the system. It is still available as a library but it should not be necessary as in almost all cases readline now works better. See HELP * READLINE, * VEDREADLINE. --- TRACE will now accept <termin> as well as ";" as end of procedures to trace. It now prints the exit and entry call of procedures using the name by which they were traced (previously closures printed as "false"). -trace- no longer constructs an updater if the untraced procedure didn't have one and a problem with people unwittingly redefining traced procedures by another name has now been fixed (by John Williams). --- LOAD, if given no name will only load the last VEDed file if it exists and is a POP-11 file (has the '.p' file extension). --- ISSUBSTRING will no longer mishap if the index is greater than the length of the string. It will just return false. --- ISSUBSTRING_LIM a version of ISSUBSTRING which allows you to set limits beyond which the substring should not be searched for. This can be efficient particularly if you are looking for a match only at the beginning of a string. See HELP * ISSUBSTRING_LIM. Jan 19 (Andrew Law) --- The procedure VEDPREVIOUSHELP for finding previous asterisks in a file (set to <ESC> u) has been added to complement VEDNEXTHELP. See HELP * VEDPROCS /vedprevioushelp and HELP * VEDGETSYSFILE. Jan 17 (Mark Rubinstein) --- SYSTMPFILE documented in REF * SYSUTIL /SYSTMPFILE. Jan 9 1986 (Mark Rubinstein) --- SYSFILEMODE a procedure (with an updater) for accessing or changing the mode (protection) flag for a file. See HELP * SYSFILEMODE. Dec 3 1985 (Mark Rubinstein) --- GENSYM reimplemented as a closure on a property (previously the property could not be accessed from the procedure). Two new autoloadable features are also provided CLEARGENSYMPROPERTY and APPGENSYMPROPERTY. See HELP * GENSYM for details. Nov 25 (Mark Rubinstein) --- HELP * CLOCK, a brief summary of procedures which make use of the system clock. Nov 14 (Mark Rubinstein) --- CHARIN_TIMEOUT has been reimplemented using POP_TIMEOUT and POP_TIMEOUT_SECS in order not to clash with the timer used by SYSSETTIMER on VMS machines. This means that arguments (given in hundredths of a second) are rounded to the nearest second. See HELP * CHARIN_TIMEOUT. Nov 3 (Aaron Sloman) --- The command 'umask 0' has been moved from the public to the local login command file. Users elsewhere have complained that this has over-ridden local protection defaults. Oct 28 (Aaron Sloman) --- Search Bug fixed in VED. It used to get into infinite loops if search started on final line, looking for non-existent string starting at beginning of line. Oct 18 (Mark Rubinstein) --- SPRINTF library for constructing formatted strings of the kind printed by PRINTF moved from local library. See HELP * SPRINTF. Oct 22 (Aaron Sloman) --- HELP * NEWOBJ extended. Oct 6 (John Williams) --- The library procedures UPPERTOLOWER and LOWERTOUPPER have been made more efficient. Please note that they no longer signal an error if given a non-numeric argument. Oct 6 (Aaron Sloman) --- Bugs in VED due to vvedlinesize not always being updated when vedline is changed, e.g. after calling VED_D, now removed. --- HELP * PARAMETERS was not quite correct in its description of the default $popsavepath. Now corrected to mention $poplocalbin. Several command files for creating saved images have now been changed to store them in $poplocalbin. Oct 4 (Mark Rubinstein) --- Local ved_print tidied up and moved into the system. See HELP * VED_PRINT. Sep 24 (Mark Rubinstein) --- REF * PROPS updated to refer to *NEWANYPROPERTY. Sep 16 (Mark Rubinstein) --- Library search lists VEDHELPLIST, VEDTEACHLIST, VEDREFLIST and VEDDOCLIST have had their formats changed. Instead of containing only strings and procedures they can now also contain lists, where the first element is a string (the directory as before) and there can optionally be up to two other elements, a word (indicating the category of the files in the directory e.g. HELP - set to VEDFILEPROPS) and a procedure (to be used as the compiler activated by VED_LMR, VED_L etc - set to POPCOMPILER). This is used by the new procedure * SYSSEARCHPATH, in order to solve a number of long-standing problems involving interactions between sub-systems. User programs using these search-lists may have to be modified. We apologise for the incovenience. --- Various libraries (e.g. VED_H) that used VEDHELPLIST altered to cope with new alternative format (see HELP * SYSSEARCHPATH). Sep 15 (Aaron Sloman) --- HELP * STRINGS updated, including information about arbitrary 8-bit characters in strings. Sep 13 (Roger Evans) --- COPYDATA added: an autoloadable utility which does a full copy of a data structure (including substructures etc). See HELP *COPYDATA for details. Sep 4 (John Gibson) --- Bigintegers are now integrated properly with record and vector classes. Integer fields in records and vectors which are wide enough to hold integers greater than the maximum simple pop integer (i.e. more than 29 bits unsigned, or more than 30 bits signed), will now accept or produce bigintegers when appropriate. --- A long-standing problem with POP-11 list and vector constructors (i.e. [...] and {...} ) containing a large number of individually- specified items has been cured. Such lists or vectors could cause the system to crash under certain conditions. --- A bug in the run-time assembler for 68000 POPLOG systems has been fixed. The symptom was that certain very large procedures produced by the PROLOG compiler did not execute properly and corrupted memory, causing random crashes. --- The POP-11 "load" macro has been moved out of the library and into the system. Sep 4 (Mark Rubinstein) --- *VEDGETLIBFILENAME no longer calls *VEDSETUP. *********** For news prior to Version 12 see HELP * NEWS.V11 *********** -----<Copyright University of Sussex 1986. All rights reserved.>-------