Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Catchup douglas #1

Merged
merged 664 commits into from
Aug 3, 2021
Merged

Catchup douglas #1

merged 664 commits into from
Aug 3, 2021

Conversation

TeamSPoon
Copy link
Member

No description provided.

JanWielemaker and others added 30 commits April 23, 2021 10:26
Corrected a missing argument in the `format/3` string
… the head.

as these harm notably the source level debugger experience.
…rong

declaration for '$moded_wrap_tabled'/5 (was /4).
quote any non-ascii character.   Escaped characters are written as ``\x<hex>\``.
JanWielemaker and others added 29 commits July 15, 2021 11:02
re-evaluation to be able to detect that a previously conditional answer
became unconditional after reevaluation. This also implies we no longer
need the save/restore related to exception handling.
This is the first of two commits that applies a refactor across the
entire SWI-Prolog codebase, changing the syntax of passing LD from
one function to another in internal library code. More details on
the refactor are in the following commit, but since this touches
so much code and to avoid having to manually verify a 20,000+ line
diff, the bulk of the changes in this commit are automated by a Perl
script, saved here (for this commit only) as src/ld-refactor.perl,
with the output of the run saved in src/ld-refactor.out. This way,
the script itself can be audited for correctness, and only the
special cases in the following commit need to be checked manually.
This is the second of two commits that applies a refactor across the
entire SWI-Prolog codebase, changing the syntax of passing LD from
one function to another in internal library code. The bulk of the
changes in this refactor were automated via Perl script in the previous
commit; see that commit message for more details on that.

Previously, functions that wanted to access LD (the local data
structure) could either use the GLOBAL_LD macro, declare the
GET_LD/PRED_LD macros early in the function, or declare ARG_LD/ARG1_LD
somewhere in the function parameter list. Calling these functions
required either declaring a macro (usually in pl-ldpass.h) that would
add the LD argument to any call to the function, or adding a
PASS_LD/PASS_LD1 annotation to each callsite.

The new style revolves around a new macro called LDFUNC, defined in
src/pl-builtin.h; see that file for details on its use. PASS_LD and
its variants are no longer required at callsites; all LDFUNC-augmented
functions have macro definitions that add the necessary arguments
to the function call. Additionally, name-mangling is performed on
function names, so it is no longer required to add `__LD` to a function
name to keep it from colliding with externally-visible API functions.

This commit also adds the API_STUB macro, which ensures that API
function definitions do *not* have their names mangled, along with
including a GET_LD declaration automatically.

For more information, see the following post:

https://swi-prolog.discourse.group/t/changes-to-ld-handling-in-library-code/4067
after nb_delete/1 or after exception/3 called by nb_current/2 with a
given variable name failed to define the variable.
@TeamSPoon TeamSPoon merged commit dd52d84 into logicmoo:master Aug 3, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants