trueagi-io / metta-wam

A Hyperon MeTTa Interpreter/Transpilier that targets the Warren Abstract Machine
7 stars 9 forks source link

REPL History Overloaded, Causing Slow Load/Exit and Failing to Preserve History Between Runs #91

Closed TeamSPoon closed 1 week ago

TeamSPoon commented 3 weeks ago

In the MeTTaLog REPL, the history management has significant issues leading to performance degradation and failure to preserve history across sessions:

  1. History Overload: The history quickly becomes overloaded with too many entries, causing the REPL to take an excessively long time to load or exit.
  2. No History Preservation Between Runs: Despite accumulating a large history during a session, the history is not preserved between runs. On restarting the REPL, all previously entered commands are lost, and the history starts fresh.

User Report:

"I don't know if this happens with anyone else, or if I'm too impatient with CTRL-C, but every so often the SWI-Prolog history gets huge and I need to delete it by removing the contents of the history directory. I thought I'd broken MeTTaLog the first time it happened. My history directory is at ~/.config/swi-prolog/dir-history/."

When the history becomes too large, users are forced to manually clear it by deleting the contents of the ~/.config/swi-prolog/dir-history/ directory to restore normal REPL performance.

Current Behavior and Bugs:

  1. Performance Issues Due to History Overload:

    • As users enter more commands during a session, the history grows rapidly.
    • When the history file becomes too large, it significantly slows down the startup and shutdown times of the REPL.
    • The issue is so severe that users often need to manually delete the history file to restore reasonable performance.
  2. Failure to Preserve History Between Runs:

    • Even after accumulating a large history in a session, none of it is retained when the REPL is restarted.
    • Upon relaunching the REPL, users find that the history is wiped clean, forcing them to re-enter commands from scratch.

Expected Behavior:

Additional Context:

This issue is not only a performance problem but also a usability concern, as the history system is currently doing more harm than good. Users face slowdowns due to overloaded history and yet still lose all their commands between sessions. Addressing these issues will improve both the speed and reliability of the REPL.

TeamSPoon commented 3 weeks ago

I will confirm these are the origins of all the evil (To make sure you knew about logicmoo_utils being part of the problem) (I snipped away some of the output that isn't part of it though)

root@hero:/opt/hyperon/metta-wam# grep -n -C 1 -E "history|readli" -R src/packs/ src/canary --include="*.pl"
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-321-:- else.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:322::- if(exists_source(library(readline))).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:323: :- system:use_module(library(readline)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-324-:- else.
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-328-:- endif.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:329:setup_hist0:-  '$toplevel':setup_history.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-330-:- initialization(setup_hist0, now).
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-534-:- system:use_module(library(prolog_format)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:535::- system:use_module(library(prolog_history)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-536-:- system:use_module(library(prolog_install)).
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-562-:- system:use_module(library(rdf_write)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:563::- system:use_module(library(readline)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-564-:- system:use_module(library(readln)).
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-735-  shell_format('lsof -t -i:~w | xargs --no-run-if-empty kill -9',[PORT100]),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:736:  % shell_format('nohup node app.js -p ~w -c rlwrap -a -A -r -c -N -r --file=completion_~w --history-filename=history_~w -s 1000 telnet localhost ~w &',[PORT100,PORT,PORT,PORT]),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:737:  shell_format('nohup ttyd -r 100 -p ~w rlwrap -a -A -r -c -N -r --file=completion_~w --history-filename=history_~w -s 1000 telnet localhost ~w &',[PORT100,PORT,PORT,PORT]),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-738-  !.
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-805-  (\+ compound(Goal); \+ functor(Goal,at_current_Y,_)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:806:  % add_history(MGoal),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-807-  source_location(S,L),!,at_phase(at_current_Y(cuz(S:L),M:Goal), When).
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1013-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1014:%setup_hist:-  '$toplevel':setup_history.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1015-%:- setup_hist.
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1111-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1112::- module_transparent((add_history/1,qsave_lm/1,ignore_not_not/1,load_library_system/1,
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1113-          all_source_file_predicates_are_transparent/0,
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1358-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1359::- system:use_module(library(prolog_history)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1360-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1361:add_history(_):- prolog_load_context(reloading, true),!.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1362:add_history(O):- add_history1(O).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1363::- export(add_history/1).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1364::- export(add_history1/1).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1365:add_history1(O):- is_list(O), member(E,O), compound(E), !, maplist(add_history,O).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1366:%add_history(O):- !, wdmsg(not_add_history(O)),!.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1367:add_history1(O):- ignore_not_not((nonvar(O),make_historical(O,A),add_history0(A))),!.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1368-
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1381-make_historical0(whenever_flag_permits(_,O),A):-!,make_historical0(O,A).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1382:make_historical0(add_history(O),A):-!,make_historical(O,A).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1383-make_historical0(O,A):- string(O),A=O.
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1389-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1390:%:- multifile prolog:history/2.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1391-:- nb_setval('$without_color',[]).
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1402-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1403:default_history_file(File):-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1404:   catch(prolog_history:dir_history_file('.', File), E,
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1405-            (print_message(warning, E),fail)),!.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1406-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1407::- set_prolog_flag(history, 5000).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1408::- dynamic(histtmp:history_data/1).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1409-
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1419-carelessly(G):- ignore(notrace(catch(G,E,((wemsg(E)),!,fail)))).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1420:add_history0(_):- notrace(app_argv('--no-history')),!.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1421:add_history0(S):-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1422:  forall(clause('$history':'$history'(_,W),true,_Ref),carelessly(add_history00(W))),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1423:  carelessly(add_history00(S)),!.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1424-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1425:add_history00(A):- make_historical(A,S),!,add_history01(S).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1426:add_history01(A):- histtmp:history_data(A),!.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1427:add_history01(A):- assert(histtmp:history_data(A)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1428:   default_history_file(File),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1429-   carelessly(setup_call_cleanup(open(File,append,Out),format(Out,'~w~n',[A]),close(Out))),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1430:   ((fail,current_prolog_flag(readline,editline)) -> User_input = libedit_input; User_input = user_input),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1431:   prolog:history(User_input, load(File)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1432-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1433:get_hist_next_num(N1):- clause('$history':'$history'(N,_),true,_Ref), !, N1 is N + 1.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1434-get_hist_next_num(1).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1435-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1436:add_history02(A0):-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1437-   make_historical(A0,A),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1438:   carelessly(prolog_history:prolog_history(enable)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1439-   current_input(S),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1440-   get_hist_next_num(N),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1441:   asserta('$history':'$history'(N,A)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1442:   (current_prolog_flag(readline,editline) -> User_input = libedit_input; User_input = user_input),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1443:   carelessly(prolog:history(S,add(A))),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1444-      ignore((
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1446-         ( \+ same_streams(S,UI)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1447:            carelessly(prolog:history(User_input,add(A))))),!,
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1448:   nop(carelessly((default_history_file(File),prolog:history(User_input, save(File))))).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1449-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1450:add_history2(X):- make_historical(X,H),assertz_new(histtmp:history_data(H)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1451-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1452:load_history_from_file(File):- \+ exists_file(File),!.
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1453:load_history_from_file(File):-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1454- setup_call_cleanup(
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1455-  open(File,read,In,[encoding(utf8)]),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1456:   (repeat, read_line_to_string(In,String), (String=end_of_file -> ! ; (add_history2(String), fail))),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1457-   close(In)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1458-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1459:load_history:-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1460: carelessly(prolog_history:prolog_history(enable)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1461: default_history_file(File),doug_only(show_call(always,load_history_from_file(File))),!,
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1462: %(current_prolog_flag(readline,editline) -> User_input = libedit_input; User_input = user_input),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1463: %prolog:history(User_input, load(File)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1464: doug_only(listing('$history':'$history'/2)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1465: doug_only(listing(histtmp:history_data/1)),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1466- !.
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1494-    format(atom(A), '~W', [Goal, [fullstop(true),portray(true),quoted(true),variable_names(Bindings)]]),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:1495:    add_history0(A))))),
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1496-   fail.
--
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-1999-
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl:2000::- now_and_later(ignore(load_history)).
src/packs/logicmoo_utils/prolog/logicmoo_startup.pl-2001-:- fixup_exports.
--
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl-27-% Load Editline/Readline
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl:28::- if( \+ current_module(prolog_history)).
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl-29-:- if((set_stream(current_input,tty(true)))).  :- endif.
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl-30-:- if(( %ignore(exists_source(library(editline))->use_module(library(editline))
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl:31:       %;(exists_source(library(readline)),use_module(library(readline)))),
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl-32-   '$toplevel':(  setup_colors,
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl:33:                  setup_history,
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl:34:                  setup_readline))). :- endif.
src/packs/logicmoo_utils/prolog/logicmoo_test_header.pl-35-:- endif.
--
src/canary/metta_repl.pl:1:load_and_trim_history:-
src/canary/metta_repl.pl-2- notrace((
src/canary/metta_repl.pl:3:  current_input(In), %catch(load_history,_,true),
src/canary/metta_repl.pl:4:  ignore(install_readline(In)) )).
src/canary/metta_repl.pl-5-
--
src/canary/metta_repl.pl-19-repl2:-
src/canary/metta_repl.pl:20:   load_and_trim_history,
src/canary/metta_repl.pl-21-   repeat,
--
src/canary/metta_repl.pl-123-    normalize_space(string(Renew),NewAccumulated),
src/canary/metta_repl.pl:124:    add_history_string(Renew).
src/canary/metta_repl.pl-125-repl_read(Accumulated, Expr) :- read_line_to_string(current_input, Line), repl_read(Accumulated, Line, Expr).
--
src/canary/metta_repl.pl-142-
src/canary/metta_repl.pl:143:add_history_string(Str):- notrace(ignore(add_history01(Str))),!.
src/canary/metta_repl.pl-144-
src/canary/metta_repl.pl:145:add_history_src(Exec):- notrace(ignore((Exec\=[],with_output_to(string(H),with_indents(false,write_src(Exec))),add_history_string(H)))).
src/canary/metta_repl.pl-146-
src/canary/metta_repl.pl:147:add_history_pl(Exec):- var(Exec), !.
src/canary/metta_repl.pl:148:add_history_pl(eval(_,catch_red(PL),_)):- !,add_history_pl(PL).
src/canary/metta_repl.pl:149:add_history_pl(show_failure(PL)):-!,add_history_pl(PL).
src/canary/metta_repl.pl:150:add_history_pl(as_tf(PL,_OUT)):-!,add_history_pl(PL).
src/canary/metta_repl.pl:151:add_history_pl(Exec):- notrace(ignore((Exec\=[],with_output_to(string(H),with_indents(false,(writeq(Exec),writeln('.')))),add_history_string(H)))).
src/canary/metta_repl.pl-152-
--
src/canary/metta_repl.pl-176-
src/canary/metta_repl.pl:177::- set_prolog_flag(history, 3).
src/canary/metta_repl.pl-178-
--
src/canary/metta_repl.pl-254-                % color_g_mesg('#fa90f6', (writeln('; SKIPPING'), with_indents(true,write_src(exec(BaseEval))))),
src/canary/metta_repl.pl:255:               %  if_t(is_list(BaseEval),add_history_src(exec(TermV))),
src/canary/metta_repl.pl-256-                 true
--
src/canary/metta_repl.pl-268-   user:name_vars('OUT'=X),
src/canary/metta_repl.pl:269:    % add_history_src(exec(BaseEval)),
src/canary/metta_repl.pl-270-      if_t(Skipping==1,writeln(' ; SKIPPING')),
--
src/canary/metta_repl.pl-275-              if_t( \+ option_value(repl,true),
src/canary/metta_repl.pl:276:                if_t(   option_value(prolog,true), add_history_pl(PL)))),
src/canary/metta_repl.pl:277:            if_t(option_value(repl,true), add_history_src(exec(BaseEval))))),
src/canary/metta_repl.pl-278-
--
src/canary/metta_repl.pl-487-
src/canary/metta_repl.pl:488::- dynamic(is_installed_readline_editline/1).
src/canary/metta_repl.pl:489::- volatile(is_installed_readline_editline/1).
src/canary/metta_repl.pl:490:install_readline_editline:- current_input(Input), install_readline(Input),!.
src/canary/metta_repl.pl-491-
src/canary/metta_repl.pl:492:install_readline(Input):- is_installed_readline_editline(Input),!.
src/canary/metta_repl.pl:493:install_readline(_):- is_compatio,!.
src/canary/metta_repl.pl:494:install_readline(_):-!.
src/canary/metta_repl.pl:495:install_readline(Input):-
src/canary/metta_repl.pl:496:   assert(is_installed_readline_editline(Input)),
src/canary/metta_repl.pl:497:   install_readline_editline1,
src/canary/metta_repl.pl:498:   use_module(library(readline)),
src/canary/metta_repl.pl-499-   use_module(library(editline)),
src/canary/metta_repl.pl:500:   nop(catch(load_history,_,true)),
src/canary/metta_repl.pl:501:    add_history_string("!(pfb3)"),
src/canary/metta_repl.pl:502:    add_history_string("!(load-flybase-full)"),
src/canary/metta_repl.pl:503:    add_history_string("!(obo-alt-id $X BS:00063)"),
src/canary/metta_repl.pl:504:    add_history_string("!(and (total-rows $T TR$) (unique-values $T2 $Col $TR))"),
src/canary/metta_repl.pl-505-    nop(ignore(editline:el_wrap)),
--
src/canary/metta_repl.pl-511-
src/canary/metta_repl.pl:512:install_readline_editline1 :-
src/canary/metta_repl.pl-513-   setup_done,
src/canary/metta_repl.pl-514-   !.
src/canary/metta_repl.pl:515:install_readline_editline1 :-
src/canary/metta_repl.pl-516-   asserta(setup_done),
src/canary/metta_repl.pl-517-  '$toplevel':(
src/canary/metta_repl.pl:518:   '$clean_history',
src/canary/metta_repl.pl-519-   apple_setup_app,
--
src/canary/metta_repl.pl-528-   catch(setup_backtrace, E1, print_message(warning, E1)),
src/canary/metta_repl.pl:529:   catch(setup_readline,  E2, print_message(warning, E2)),
src/canary/metta_repl.pl:530:   catch(setup_history,   E3, print_message(warning, E3)),
src/canary/metta_repl.pl-531-   catch(setup_colors, E4, print_message(warning, E4))),
src/canary/metta_repl.pl:532:   install_readline(user_input).
src/canary/metta_repl.pl-533-
--
src/canary/metta_interp.pl-57-:- ensure_loaded(swi_support).
src/canary/metta_interp.pl:58::- set_prolog_flag(history, 10).
src/canary/metta_interp.pl:59::- set_prolog_flag(save_history, true).
src/canary/metta_interp.pl-60-:- set_prolog_flag(backtrace,true).
--
src/canary/metta_interp.pl-272-%:- set_stream(user_input,tty(true)).
src/canary/metta_interp.pl:273::- if(exists_source(library(readline))).
src/canary/metta_interp.pl:274::- use_module(library(readline)).
src/canary/metta_interp.pl-275-:- endif.
--
src/canary/metta_interp.pl-801-save_html_of(_):- \+ has_loonit_results, \+ option_value('html',true).
src/canary/metta_interp.pl:802:save_html_of(_):- loonit_report, !, writeln('<br/> <a href="#" onclick="window.history.back(); return false;">Return to summaries</a><br/>').
src/canary/metta_interp.pl-803-save_html_of(_Filename):-!.
--
src/canary/metta_interp.pl-809-  tee_file(TEE_FILE),
src/canary/metta_interp.pl:810:  writeln('<br/> <a href="#" onclick="window.history.back(); return false;">Return to summaries</a><br/>'),
src/canary/metta_interp.pl-811-  sformat(S,'ansi2html -u < "~w" > "~w" ',[TEE_FILE,HtmlFilename]),
--
src/canary/metta_interp.pl-1644-   %if_t(is_compiled,ensure_mettalog_py),
src/canary/metta_interp.pl:1645:          install_readline_editline,
src/canary/metta_interp.pl-1646-   nts,
--
src/canary/metta_interp.pl-1648-   metta_final,
src/canary/metta_interp.pl:1649:   nop(load_history),
src/canary/metta_interp.pl:1650:   set_prolog_flag(history, 3),
src/canary/metta_interp.pl-1651-   % ensure_corelib_types,
--
src/canary/metta_interp.pl-1761-:- initialization(update_changed_files,restore).
src/canary/metta_interp.pl:1762::- set_prolog_flag(history, 3).
src/canary/metta_interp.pl-1763-
--
src/canary/swi_support.pl-182-
src/canary/swi_support.pl:183::- if( \+ current_predicate(add_history1/1)).
src/canary/swi_support.pl:184:add_history1(_).
src/canary/swi_support.pl-185-:- endif.
src/canary/swi_support.pl-186-
src/canary/swi_support.pl:187::- if( \+ current_predicate(add_history/1)).
src/canary/swi_support.pl:188:add_history(_).
src/canary/swi_support.pl-189-:- endif.

--
src/canary/metta_testing.pl-754-mf('./src/test_nspace.metta').
src/canary/metta_testing.pl:755::- forall(mf(H),add_history1(load_metta(H))).
src/canary/metta_testing.pl-756-%:- load_metta
root@hero:/opt/hyperon/metta-wam#
TeamSPoon commented 1 week ago

So far so good! Lets close this for now