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

This rebases overtop of the head of CFFI, and also adds a commit I needed for ECL #2

Closed
wants to merge 30 commits into from

Conversation

eschulte
Copy link

Please feel free to drop the last ECL commit at your discretion.

I needed this rebase to get CFFI to load with a Mac M1.

pfdietz and others added 30 commits August 21, 2022 15:39
Add specialized lookup for the default table case.
This should be faster that the previous EQUAL hash table scheme.
In Mac OS Big Sur, system dynamic libraries are no longer present on the
filesystem and reside in the dynamic linker cache. This change searches
for the framework directory instead of the dynamic library underneath
the framework directory.

https://developer.apple.com/documentation/macos-release-notes/macos-big-sur-11_0_1-release-notes

Fixes lp#1906982.
defun-like semantics were meant for defcallback, but it's no longer used there.

This allows for empty structure/union definitions, e.g. (defcstruct foo "empty").
 * This is the (current) default path for arm64 homebrew
   libraries. Try this before the rest.
This reverts commit b3e6b3f.

Osicat fails to compile. lp#1922428
the process is: foo.h -> foo.spec -> foo.lisp

foo.spec -> foo.lisp works as expected, but foo.h -> foo.spec is only
executed when the spec file is entirely missing.
When a foreign function is not found by find-foreign-function (either because
the function doesn't exist, or because the library is not loaded), nil is
returned, so %%foreign-funcall is called with nil as a function, which
ultimately leads to a null-pointer exception.

Better to signal an error on the lisp side.
It remains compatible with existing code, but accepts additional formats for bindings:
1) (name slot-name) - just like WITH-SLOTS;
2) (name :pointer slot-name) - a pointer version.
Report a bad package designator in (IN-PACKAGE :FOO) as

    The name :FOO does not designate any package.

instead of

    The value
      NIL
    is not of type
      PACKAGE
I was tempted to load libffi.so and libffi32.so, to make this
future-proof, but I didn't dare to be so bold :-)
 * build all branches
 * test more implementations (but only SBCL and CCL are mandatory)
 * libffi-dev is now installed by cl-travis
 * disable TEST-STATIC-PROGRAM because it fails due to sbcl.o not being
build with -fPIE
 * print unexpected failures at the end of the test run
Where variadic arguments are not just passed normally.

Closes cffi#297
This allows the groveler to correctly handle cstruct definitions that include arrays
The docs should prevent confusion with the Python CFFI project.
@death
Copy link
Owner

death commented Aug 22, 2022

Hey,

I could merge it, but it's probably best to keep your own fork with any patches you might need. I use vanilla cffi in my day-to-day, since the patches I wrote are not backwards compatible and I don't use cl-tree-sitter on a regular basis. Another option is to have a tree-sitter branch instead of doing things on master.

GitHub does not notify me of pull requests to forks, so it's by chance that I noticed this one.

@eschulte
Copy link
Author

eschulte commented Sep 3, 2022

Thanks, I'll try to get sel to maintain a different fork of CFFI (GrammaTech/sel#26).

@eschulte eschulte closed this Sep 3, 2022
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.