unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* Guile-Git 0.6.0 released; looking for maintainers!
@ 2024-02-27  9:47 Ludovic Courtès
  2024-02-27 19:25 ` Attila Lendvai
  0 siblings, 1 reply; 2+ messages in thread
From: Ludovic Courtès @ 2024-02-27  9:47 UTC (permalink / raw)
  To: guix-devel, guile-user; +Cc: Mathieu Othacehe


[-- Attachment #1.1: Type: text/plain, Size: 1146 bytes --]

Hello!

I’m glad to announce that Guile-Git 0.6.0 has been released, fixing
longstanding issues and adding support for newer libgit2 versions!

  https://gitlab.com/guile-git/guile-git/

See ‘NEWS’ file excerpt below.

Incidentally, Guile-Git needs your help!  The initial driving force
behind the project is no longer around to help (and I’d like to thank in
particular Erik Edrosa for all their work shepherding the project).  We
need new volunteers to help, and new maintainers.  If you rely on the
project and/or would like to help, let’s get in touch!

One of the things to look into going further is ABI compatibility.
We’re playing whack-a-mole with ABI/API changes introduced as new
libgit2 versions come out; the ‘check-abi’ target contributed by Sören
Tempel helps in finding glaring ABI mismatches with structs, but it’s
not completely bulletproof either (due to SysV alignment rules, missing
fields etc. are not always uncovered, especially on 64-bit platforms).
An idea might be to look into using nyacc’s ffi-helper to generate
struct definitions.

Happy version control!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: Type: text/x-org, Size: 1390 bytes --]

* Changes in 0.6.0 (since 0.5.2)

** Updated requirements

Guile-Git now requires libgit2 >= 1.3.0.

** New functionality

*** Support libgit2 up to 1.7.x

*** Support for checkout options

Checkout options can be created with ~make-checkout-options~ and passed
to ~checkout-head~, ~checkout-index~, etc.

*** New ~remote-connect/detached~ procedure

Lets you connect to a detached remote.

*** New ~(git ignore)~ module and ~ignored-file?~  procedure

The ~ignored-file?~ returns true when a file is ignored according to the
ignore rules.

*** New ~owner-validation?~ and ~set-owner-validation!~ procedures

These procedures let you query and set repository directory ownership
validation, which raises an error when attempting to access a repository
not owned by the current user.

*** New ~describe-checkout~ procedure

The procedure returns a pretty description of a checkout, similar to
the ~git describe~ command.

** Bug fixes

*** Always use native endianness when interpreting ~size_t~ pointers
   (<https://gitlab.com/guile-git/guile-git/-/issues/20>)

*** Add missing argument to C call made by ~repository-index~

*** Clone-over-SSH tests now ignores =~/.ssh/known_hosts= validation
   (<https://gitlab.com/guile-git/guile-git/-/issues/29>)

*** Fix various binary interface incompatibility issues

Running ~make check-abi~ now flags application binary interface (ABI)
issues.


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 869 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Guile-Git 0.6.0 released; looking for maintainers!
  2024-02-27  9:47 Guile-Git 0.6.0 released; looking for maintainers! Ludovic Courtès
@ 2024-02-27 19:25 ` Attila Lendvai
  0 siblings, 0 replies; 2+ messages in thread
From: Attila Lendvai @ 2024-02-27 19:25 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel, guile-user, Mathieu Othacehe

> An idea might be to look into using nyacc’s ffi-helper to generate
> struct definitions.


over there in CL land i wrote an automatic FFI generator. it's now part of the main CL FFI lib:

https://github.com/cffi/cffi/tree/master/src/c2ffi

it is based on c2ffi:

https://github.com/rpav/c2ffi

which is a piece of C++ code that uses CLANG as a library to parse any C header file, and emit its content into a json file.

a thin layer of lisp code can generate the actual sexp FFI definitions from the json files, that then can be hooked into the usual guile way of doing FFI.

the json files can be checked into the repo, which then eliminates the dependency on c2ffi on the user side (i.e. the project is only as heavy as any other hand-written FFI wrapper). that way only the maintainer needs to regenerate the json files every once in a while.

or short of a smarter build tool like ASDF, we can also check in the generated lisp files.

if there's interest, then i can help porting this over to guile.

below are some example projects that are using it. they are rather thin and simple, yet provide a full FFI:

https://github.com/hu-dwim/hu.dwim.zlib
https://github.com/hu-dwim/hu.dwim.sdl

PS: clang now supports `-ast-dump=json`, which may or may not eliminate the need for c2ffi entirely: https://github.com/rpav/c2ffi/issues/112

-- 
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“Sometimes I wonder whether the world is being run by smart people who are putting us on or by imbeciles who really mean it.”
	— Mark Twain (1835-1910)




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-02-27 19:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-27  9:47 Guile-Git 0.6.0 released; looking for maintainers! Ludovic Courtès
2024-02-27 19:25 ` Attila Lendvai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).