A what now?
(foreing c) is a portable C Foreign function interface for R6RS and R7RS Schemes.
Forewords
This is not intended as deep dive into (foreign c), more of a "Still here", blog post. It is not uncommon for people to just disappear so I thought I'd make some noice.
(foreign c v1)
When I started work on the (foreign c) I did not know too much about C. That meant that when I built libraries on top of it I needed to rewrite the libraries any time (foreign c) interface changed. Now I do not think anyone likes that, I certainly do not. But how can I build something solid that I (and others) can build on top when I am not certain that the design is right?
This does not mean that I want to change the interface design all the time. On the contrary. But there is a real risk that there are things that I could not anticipate. Even as my knowledge of the C and it ecosystem has grown over time. But the risks are always there. Therefore to let myself build something else other than infra for a while. Maybe something on top of it. The development has to "stop" at some point. Something has to be finished at some point.
Therefore I've decided that current iteration is "good enough", and it should be. I do really think so. But if something were to ever happen and backwards compatible changes were needed I've also decided to add, in addition to (foreign c), library named (foreign c v1) into the snow-fort package. By importing this package, user can be assured that they will always get a reliable and unchaning interface. And if it is good enough for their use case they never have to update from.
My intention is also not to start making (foreign c v2). I hope it
never needs to be made or released. But I rest a bit easier when I
know that when there is urge to yak shave legitimate
need for new library interface it can be done.
Now the (library name version) format is not ideal, and I would not use it anywhere else. But in this case I can not keep breaking my own libraries, and this way is the most portable way to do it. It works on both R6RS and R7RS.
When?
Propably during next six months. I'd rather not give too strict timetable for myself on hobby projects. I also have work and studies. After it's published I will start updating my libraries that depend on (foreign c) and working on many many many bugs that it has.