The following question was raised during my development of an asynchronous library I'm currently building for RabbitMQ.

In summary, the library allows you to create an object of type ASYNCH-CONNECTION, from which instances of ASYNC-CHANNEL can be retrieved. A connection holds a reference to all channels that it uses, and each channel holds a reference to its connection. The connection object has a pointer to a native CFFI object that for the underlying connection (my library is built on the RabbitMQ C API).

My question is: Should I use trivial-garbage to create a GC hook for the connection object so that if the user of the library forgets to close the connection, it will get closed eventually once it's GC'ed?

I can see arguments for both behaviours:
To me, there is no strictly correct answer to the question, which is why I'm asking for suggestions from you guys.

Regards,
Elias (loke on #lisp)