From 03b59d5a335099ab5e0e56c235450da0501820e8 Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Mon, 9 Feb 2026 09:37:19 -0800 Subject: [PATCH] Rename 'NOBIND' table name to 'UNBOUND' to allow running interpreted (#2484) evaluating a variable bound to NOBIND causes errors when run interpreted (doesn't when run compiled). It's not clear why this design decision was made, but in this case compiling MASTERSCOPE was hung up trying to run a subfuncion involved in macroexpansion after LOAD(MASTERSCOPE). --- library/MASTERSCOPE | 178 +++++++++++++++++--------------------- library/MASTERSCOPE.DFASL | Bin 70941 -> 70825 bytes 2 files changed, 80 insertions(+), 98 deletions(-) diff --git a/library/MASTERSCOPE b/library/MASTERSCOPE index a6006ac2..e90fa213 100644 --- a/library/MASTERSCOPE +++ b/library/MASTERSCOPE @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "24-Aug-2025 13:45:51" {WMEDLEY}MASTERSCOPE.;30 197199 +(FILECREATED " 8-Feb-2026 19:27:31" {DSK}larry>il>MEDLEY>LIBRARY>MASTERSCOPE.;3 197425 - :EDIT-BY rmk + :EDIT-BY "lmm" - :CHANGES-TO (FNS MSINTERPRET) + :CHANGES-TO (FNS BUILDGETRELQ) - :PREVIOUS-DATE " 5-Apr-2025 11:49:04" {WMEDLEY}MASTERSCOPE.;29) + :PREVIOUS-DATE " 8-Feb-2026 18:47:30" {DSK}larry>il>MEDLEY>LIBRARY>MASTERSCOPE.;2) (PRETTYCOMPRINT MASTERSCOPECOMS) @@ -847,34 +847,25 @@ (T (CDR (FASSOC Y MSDATABASELST]) (MSSTOREDATA - [LAMBDA (FNNAME FNDATA) (* lmm " 1-JUN-81 23:19") + [LAMBDA (FNNAME FNDATA) (* ; "Edited 8-Feb-2026 18:42 by lmm") + (* lmm " 1-JUN-81 23:19") (PROG [NEWREL (KWN (PARSERELATION 'KNOWN] - (SETQ MSDBEMPTY NIL) - - (* Database for FNNAME about to become inconsistant - - mark it as changed) - + (SETQ MSDBEMPTY NIL) (* Database for FNNAME about to become + inconsistant - + mark it as changed) (PUTHASH FNNAME T MSCHANGEDARRAY) - - (* * Now update the database) + + (* * Now update the database) (for TAB in MSDATABASELST when (AND (NOT (FMEMB (CAR TAB) - NODUMPRELATIONS)) - (NEQ (CDDR TAB) - T)) do (SETQ NEWREL - (MSCOLLECTDATA - (CAR TAB))) - (STORETABLE FNNAME TAB - NEWREL)) + NODUMPRELATIONS)) + (NEQ (CDDR TAB) + T)) do (SETQ NEWREL (MSCOLLECTDATA (CAR TAB))) + (STORETABLE FNNAME TAB NEWREL)) [OR (TESTRELATION FNNAME KWN) - (PUTTABLE FNNAME T (CADR (FASSOC 'NOBIND MSDATABASELST] - - (* Table NOBIND is for those functions which don't do very much. - The idea is that the test that a function has been analyzed is whether it - binds variables are calls functions, etc. - However, for those functions which have no such entries, - (e.g. their definition is (LAMBDA NIL NIL)) need to still be able to know - that they were.) + (PUTTABLE FNNAME T (CADR (FASSOC 'UNBOUND MSDATABASELST] + + (* ;; "Table UNBOUND is for those functions which don't do very much. The idea is that the test that a function has been analyzed is whether it binds variables are calls functions, etc. However, for those functions which have no such entries, (e.g. their definition is (LAMBDA NIL NIL)) need to still be able to know that they were.") (PUTHASH FNNAME NIL MSCHANGEDARRAY]) @@ -911,7 +902,7 @@ ((CALL 25 . 50) (BIND 10 . 10) [NLAMBDA 10 . 10] - (NOBIND 10) + (UNBOUND 10) (RECORD 20 . 10) (CREATE 2 . 2) (FETCH 10 . 10) @@ -1120,9 +1111,10 @@ (DEFINEQ (MSVBTABLES - [LAMBDA (VERB MOD) (* ; "Edited 30-Jun-87 10:32 by jrb:") - - (* ;; "The call to MSUSERVBTABLES checks a user hash table to allow extensions.") + [LAMBDA (VERB MOD) (* ; "Edited 8-Feb-2026 18:44 by lmm") + (* ; "Edited 30-Jun-87 10:32 by jrb:") + + (* ;; "The call to MSUSERVBTABLES checks a user hash table to allow extensions.") [COND ((LISTP VERB) @@ -1159,10 +1151,10 @@ (IS (SELECTQ MOD (FIELDS '((FETCH) (REPLACE))) - (FNS '(CALL NOBIND REF (CALL) + (FNS '(CALL UNBOUND REF (CALL) (APPLY))) - (KNOWN '(CALL NOBIND REF)) - (NIL '(CALL NOBIND REF (CALL) + (KNOWN '(CALL UNBOUND REF)) + (NIL '(CALL UNBOUND REF (CALL) (BIND) (REFFREE) (REF) @@ -1192,7 +1184,7 @@ (TYPE '((0))) NIL)) (KNOWN (SELECTQ MOD - (NIL '(CALL NOBIND REF)) + (NIL '(CALL UNBOUND REF)) NIL)) (PROG (SELECTQ MOD (NIL 'PROG) @@ -1258,23 +1250,20 @@ (DEFINEQ (BUILDGETRELQ - [LAMBDA (X) (* ; "Edited 16-Jun-87 12:36 by jrb:") - + [LAMBDA (X) (* ; "Edited 8-Feb-2026 19:24 by lmm") + (* ; "Edited 16-Jun-87 12:36 by jrb:") (PROG ([VAR (COND ((LITATOM (CADR X)) (CADR X)) (T '$$1] FORM F1) - [for REL in (MSVBTABLES (CAR X)) - do [SETQ F1 (LIST 'GETTABLE VAR (LIST (COND - ((CADDR X) - 'CDDR) - (T 'CADR)) - (LIST 'FASSOC (KWOTE REL) - 'MSDATABASELST] - (SETQ FORM (COND - (FORM (LIST 'UNION F1 FORM)) - (T F1] + [for REL in (MSVBTABLES (CAR X)) do [SETQ F1 `(GETTABLE ,VAR (,(CL:IF (CL:THIRD X) + 'CDDR + 'CADR) + (FASSOC ',REL MSDATABASELST] + (SETQ FORM (COND + (FORM (LIST 'UNION F1 FORM)) + (T F1] (RETURN (COND ((EQ VAR (CADR X)) FORM) @@ -2577,7 +2566,7 @@ (* ; "interactive routines") -(RPAQ MASTERSCOPEDATE "24-Aug-2025") +(RPAQ MASTERSCOPEDATE " 8-Feb-2026") (ADDTOVAR HISTORYCOMS %.) (DEFINEQ @@ -2616,15 +2605,14 @@ (GO ERLP]) (MASTERSCOPEXEC - [LAMBDA (X LINE) (* ; "Edited 17-Jun-87 16:57 by jrb:") - (* Called via the LISPX in - MASTERSCOPE) + [LAMBDA (X LINE) (* ; "Edited 8-Feb-2026 18:46 by lmm") + (* ; "Edited 17-Jun-87 16:57 by jrb:") + (* Called via the LISPX in MASTERSCOPE) (* ; - "Merged from smL Loops Masterscope by JRB") - + "Merged from smL Loops Masterscope by JRB") (PROG (MASTERSCOPECOMMAND) (AND [OR [COND - ((NULL LINE) (* Single entry on line) + ((NULL LINE) (* ; "Single entry on line") (OR (NOT (LITATOM X)) (OR (NEQ (EVALV X) 'NOBIND) @@ -2633,17 +2621,14 @@ (FGETD X) (LISTP LINE) (OR [COND - ((NULL (CDR LINE)) (* "EDITF ] " OR SETQ - (A B) TYPE ENTRY) + ((NULL (CDR LINE)) (* ; + "'EDITF ] ' OR SETQ (A B) TYPE ENTRY") (OR (NULL (CAR LINE)) (LISTP (CAR LINE] (EQ (ARGTYPE X) 3] - (RETURN)) - - (* If MASTERSCOPEXEC returns NIL, then LISPX will handle the event as a - normal typin) - + (RETURN)) (* ; + "If MASTERSCOPEXEC returns NIL, then LISPX will handle the event as a normal typin") (SETQ MASTERSCOPECOMMAND (CONS X LINE)) (SELECTQ (CAR MASTERSCOPECOMMAND) ((OK STOP BYE ok stop) @@ -2651,11 +2636,8 @@ NIL) LISPXVALUE [AND (LISTP LISPXHIST) - (FRPLACA LISPXHIST (CONS '%. (CAR LISPXHIST] - - (* Make sure the event shows up with a %. - in it) - + (FRPLACA LISPXHIST (CONS '%. (CAR LISPXHIST] (* ; + "Make sure the event shows up with a . in it") (SETQ LISPXVALUE (MSINTERPRET MASTERSCOPECOMMAND)) (RETURN T]) ) @@ -3742,36 +3724,36 @@ (ADDTOVAR LAMA MSEDITE MSEDITF) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3263 19510 (UPDATEFN 3273 . 4890) (MSGETDEF 4892 . 6298) (MSNOTICEFILE 6300 . 8693) ( -MSSHOWUSE 8695 . 14676) (MSUPDATEFN1 14678 . 15366) (MSUPDATE 15368 . 17794) (MSNLAMBDACHECK 17796 . -18678) (MSCOLLECTDATA 18680 . 19508)) (19511 20410 (UPDATECHANGED 19521 . 19884) (UPDATECHANGED1 19886 - . 20408)) (20984 21407 (MSCLOSEFILES 20994 . 21405)) (22088 26520 (MSDESCRIBE 22098 . 24886) ( -MSDESCRIBE1 24888 . 25951) (FMAPRINT 25953 . 26518)) (26613 27053 (MSPRINTHELPFILE 26623 . 27051)) ( -27103 30241 (TEMPLATE 27113 . 28534) (GETTEMPLATE 28536 . 28671) (SETTEMPLATE 28673 . 30239)) (31111 -36035 (ADDTEMPLATEWORD 31121 . 31793) (MSADDANALYZE 31795 . 33293) (MSADDMODIFIER 33295 . 34376) ( -MSADDRELATION 34378 . 35125) (MSADDTYPE 35127 . 36033)) (37536 42757 (MSMARKCHANGE1 37546 . 38340) ( -MSINIT 38342 . 39523) (GETVERBTABLES 39525 . 40078) (MSSTOREDATA 40080 . 41759) (STORETABLE 41761 . -42755)) (44158 49228 (PARSERELATION 44168 . 44768) (PARSERELATION1 44770 . 46225) (GETRELATION 46227 - . 47256) (MAPRELATION 47258 . 48392) (TESTRELATION 48394 . 49226)) (49229 50869 (ADDHASH 49239 . -49717) (SUBHASH 49719 . 49947) (MAKEHASH 49949 . 50093) (MSREHASH 50095 . 50548) (EQMEMBHASH 50550 . -50867)) (51208 57423 (MSVBTABLES 51218 . 56997) (MSUSERVBTABLES 56999 . 57421)) (57506 59717 ( -BUILDGETRELQ 57516 . 58622) (BUILDTESTRELQ 58624 . 59715)) (59888 60276 (MSERASE 59898 . 60274)) ( -60277 64737 (DUMPDATABASE 60287 . 62852) (DUMPDATABASE1 62854 . 63199) (READATABASE 63201 . 64735)) ( -65819 94878 (MSCHECKBLOCKS 65829 . 69649) (MSCHECKBLOCK 69651 . 78271) (MSCHECKFNINBLOCK 78273 . 81273 -) (MSCHECKBLOCKBASIC 81275 . 83695) (MSCHECKBOUNDFREE 83697 . 85596) (GLOBALVARP 85598 . 85765) ( -PRINTERROR 85767 . 88983) (MSCHECKVARS1 88985 . 91938) (UNECCSPEC 91940 . 92218) (NECCSPEC 92220 . -92567) (SPECVARP 92569 . 93096) (SHORTLST 93098 . 93554) (DOERROR 93556 . 94266) (MSMSGPRINT 94268 . -94876)) (96022 110850 (MSPATHS 96032 . 99434) (MSPATHS1 99436 . 103671) (MSPATHS2 103673 . 107083) ( -MSONPATH 107085 . 108313) (MSPATHS4 108315 . 109397) (DASHES 109399 . 109925) (DOTABS 109927 . 110168) - (BELOWMARKER 110170 . 110633) (MSPATHSPRINTFN 110635 . 110848)) (111236 114660 (MSFIND 111246 . -111521) (MSEDITF 111523 . 112523) (MSEDITE 112525 . 113562) (EDITGETDEF 113564 . 114658)) (115602 -124203 (MSMARKCHANGED 115612 . 117336) (CHANGEMACRO 117338 . 118043) (CHANGEVAR 118045 . 118361) ( -CHANGEI.S. 118363 . 119696) (CHANGERECORD 119698 . 120569) (MSNEEDUNSAVE 120571 . 121563) (UNSAVEFNS -121565 . 124201)) (124636 128126 (%. 124646 . 124786) (MASTERSCOPE 124788 . 125314) (MASTERSCOPE1 -125316 . 126184) (MASTERSCOPEXEC 126186 . 128124)) (128165 167815 (MSINTERPRETSET 128175 . 156709) ( -MSINTERPA 156711 . 157245) (MSGETBLOCKDEC 157247 . 159760) (LISTHARD 159762 . 160980) (MSMEMBSET -160982 . 161127) (MSLISTSET 161129 . 161494) (MSHASHLIST 161496 . 161663) (MSHASHLIST1 161665 . 161991 -) (CHECKPATHS 161993 . 162633) (ONFILE 162635 . 167813)) (167816 191377 (MSINTERPRET 167826 . 183881) -(VERBNOTICELIST 183883 . 184993) (MSOUTPUT 184995 . 186505) (MSCHECKEMPTY 186507 . 187711) ( -CHECKFORCHANGED 187713 . 188233) (MSSOLVE 188235 . 191375))))) + (FILEMAP (NIL (3300 19547 (UPDATEFN 3310 . 4927) (MSGETDEF 4929 . 6335) (MSNOTICEFILE 6337 . 8730) ( +MSSHOWUSE 8732 . 14713) (MSUPDATEFN1 14715 . 15403) (MSUPDATE 15405 . 17831) (MSNLAMBDACHECK 17833 . +18715) (MSCOLLECTDATA 18717 . 19545)) (19548 20447 (UPDATECHANGED 19558 . 19921) (UPDATECHANGED1 19923 + . 20445)) (21021 21444 (MSCLOSEFILES 21031 . 21442)) (22125 26557 (MSDESCRIBE 22135 . 24923) ( +MSDESCRIBE1 24925 . 25988) (FMAPRINT 25990 . 26555)) (26650 27090 (MSPRINTHELPFILE 26660 . 27088)) ( +27140 30278 (TEMPLATE 27150 . 28571) (GETTEMPLATE 28573 . 28708) (SETTEMPLATE 28710 . 30276)) (31148 +36072 (ADDTEMPLATEWORD 31158 . 31830) (MSADDANALYZE 31832 . 33330) (MSADDMODIFIER 33332 . 34413) ( +MSADDRELATION 34415 . 35162) (MSADDTYPE 35164 . 36070)) (37573 42669 (MSMARKCHANGE1 37583 . 38377) ( +MSINIT 38379 . 39560) (GETVERBTABLES 39562 . 40115) (MSSTOREDATA 40117 . 41671) (STORETABLE 41673 . +42667)) (44071 49141 (PARSERELATION 44081 . 44681) (PARSERELATION1 44683 . 46138) (GETRELATION 46140 + . 47169) (MAPRELATION 47171 . 48305) (TESTRELATION 48307 . 49139)) (49142 50782 (ADDHASH 49152 . +49630) (SUBHASH 49632 . 49860) (MAKEHASH 49862 . 50006) (MSREHASH 50008 . 50461) (EQMEMBHASH 50463 . +50780)) (51121 57437 (MSVBTABLES 51131 . 57011) (MSUSERVBTABLES 57013 . 57435)) (57520 59823 ( +BUILDGETRELQ 57530 . 58728) (BUILDTESTRELQ 58730 . 59821)) (59994 60382 (MSERASE 60004 . 60380)) ( +60383 64843 (DUMPDATABASE 60393 . 62958) (DUMPDATABASE1 62960 . 63305) (READATABASE 63307 . 64841)) ( +65925 94984 (MSCHECKBLOCKS 65935 . 69755) (MSCHECKBLOCK 69757 . 78377) (MSCHECKFNINBLOCK 78379 . 81379 +) (MSCHECKBLOCKBASIC 81381 . 83801) (MSCHECKBOUNDFREE 83803 . 85702) (GLOBALVARP 85704 . 85871) ( +PRINTERROR 85873 . 89089) (MSCHECKVARS1 89091 . 92044) (UNECCSPEC 92046 . 92324) (NECCSPEC 92326 . +92673) (SPECVARP 92675 . 93202) (SHORTLST 93204 . 93660) (DOERROR 93662 . 94372) (MSMSGPRINT 94374 . +94982)) (96128 110956 (MSPATHS 96138 . 99540) (MSPATHS1 99542 . 103777) (MSPATHS2 103779 . 107189) ( +MSONPATH 107191 . 108419) (MSPATHS4 108421 . 109503) (DASHES 109505 . 110031) (DOTABS 110033 . 110274) + (BELOWMARKER 110276 . 110739) (MSPATHSPRINTFN 110741 . 110954)) (111342 114766 (MSFIND 111352 . +111627) (MSEDITF 111629 . 112629) (MSEDITE 112631 . 113668) (EDITGETDEF 113670 . 114764)) (115708 +124309 (MSMARKCHANGED 115718 . 117442) (CHANGEMACRO 117444 . 118149) (CHANGEVAR 118151 . 118467) ( +CHANGEI.S. 118469 . 119802) (CHANGERECORD 119804 . 120675) (MSNEEDUNSAVE 120677 . 121669) (UNSAVEFNS +121671 . 124307)) (124742 128352 (%. 124752 . 124892) (MASTERSCOPE 124894 . 125420) (MASTERSCOPE1 +125422 . 126290) (MASTERSCOPEXEC 126292 . 128350)) (128391 168041 (MSINTERPRETSET 128401 . 156935) ( +MSINTERPA 156937 . 157471) (MSGETBLOCKDEC 157473 . 159986) (LISTHARD 159988 . 161206) (MSMEMBSET +161208 . 161353) (MSLISTSET 161355 . 161720) (MSHASHLIST 161722 . 161889) (MSHASHLIST1 161891 . 162217 +) (CHECKPATHS 162219 . 162859) (ONFILE 162861 . 168039)) (168042 191603 (MSINTERPRET 168052 . 184107) +(VERBNOTICELIST 184109 . 185219) (MSOUTPUT 185221 . 186731) (MSCHECKEMPTY 186733 . 187937) ( +CHECKFORCHANGED 187939 . 188459) (MSSOLVE 188461 . 191601))))) STOP diff --git a/library/MASTERSCOPE.DFASL b/library/MASTERSCOPE.DFASL index 585c6b982eae330994b1ea6d27e836020b3f0d46..934af73263001f291f10b0055fdcfd8de350fd74 100644 GIT binary patch delta 7699 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 delta 7920 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 kYNk-5y~Rb{n$B6Gy~QVHv4KCBSbJTCL69%L|M}