30 May 2021
Long time no see my C++ autowrapping rants. But several bindings later,
has reached the stage where it is ready to leave a garage and see the outside
world. Since my last post, some approaches were revised, though the autowrapping
process is still not fully cemented yet. I wouldn’t expect
:claw to be out of
beta for at least a year. That doesn’t mean it is unusable, but rather I cannot
guarantee a stable interface and a trivial procedure for setting it up.
In other big news,
:alien-works system got
required foreign libraries wrapped and integrated, including some complex and
peculiar C++ ones (Skia 👀). Next step is to
write a game, based on
:alien-works framework, to see how much lispification
of autowrapped systems is possible without loosing any performance and what is
required for a solid game delivery.
11 Aug 2020
Huge first milestone for
:claw honing is reached - I’ve run C++ library
routines (PhysX) from Common Lisp
without writing any
C/C++ myself, without writing any bindings
C adapter and
CL bindings, I only built the former
and called the latter.
This is an important proof of the concept:
IFFI approach works
- C wrapper generation for C++ is possible with
libclang) - no
need to dive into llvm/clang development libraries any deeper, or so it seems so
99% work done, so only another 99% left.
12 Jun 2020
Free time too play with CL is quite a luxury item for me as of late, but
finally! - I’ve got a whole week of me-time and I’m planning to pour all of it
:claw - the precious jewel at the
heart of most of my projects.
:claw is a library for automatically creating Common Lisp bindings to foreign
libraries that provide C interface.
:claw already works well, but having
access only to libraries with C-compatible interface is quite limiting. I’m a
game developer both at work and at home and a lot of gamedev libraries are
either C++ only and don’t export any C interface at all or such interface is
out-of-date or heavily underdocumented. Unfortunately, I don’t have enough
man-hours to reimplement all of those in pure Common Lisp myself and bindings
seem like a huge time saver. That’s right, I’m working on bringing C++ support
In this post, I’ll try to summarize how I envision this support being
:claw. If you think something can be done better, faster or
maybe I’m plain wrong somewhere - I appreciate if you drop a comment with your
ideas here or via email/IRC.
27 May 2019
Lisp Game Jam 2019 is over and there
are quite a number of submissions based on
trivial-gamekit this time:
Thanks to everyone who participated and I’m especially grateful to authors of
above games for their trust in
gamekit. Any jam is a stress and having solid
tools during this time is very important. Thank you for giving
I’ve received a couple questions about
trivial-gamekit future and what
direction it is heading.
Here’s my answer.
26 Aug 2018
Unbeleivably, I’ve got into writing more
cl-bodge docs recently. But you know what, now I know
how to make it a lot more fun - literate programming!
Common Lisp, SLY/SLIME and Emacs
org-mode are especially good for this kind of task.
org-mode exposes tools for evaluating code blocks directly from a document and tangling those
blocks into source files appropriately, while Common Lisp + SLY/SLIME combination allows you to
gradually build your project evaluating code bit-by-bit in a live session, meaning you are
writing documentation and building a project at the same time, meaning you are not getting
bored of writing plaintext as much, which is just an amazingly handy trait of writing guides or
examples in literate programming style.
To have a sneak peek into what’s coming, you can have a look at the WIP
GitHub. All source code in this project is generated from
.org files. You can’t use the guide
yet, because latest
cl-bodge updates are not published into
cl-bodge dist. You can clone
bodge-projects repository recursively into
~/quicklisp/local-projects/, but I would
recommend against this practice. At least don’t forget to delete all the cloned stuff after
trying it out.
06 Jun 2018
It started, at last!
I have so much going on in CL land that writing a documentation for a thing no one uses (besides
me, obviously) and is not even stable enough, is literally one of the last things I consider
doing. But lately there was some interest in trivial-gamekit internals which is really just a high-level
interface, so I finally decided to bring my ass into writing at least some documentation for
most stable parts of it. Refreshed introductory and an
overview pages so far.
Hopefully, that wouldn’t be the end of it - the immense effort generic programmers like myself
very love to engage with.
03 May 2017
That was a blast! And so Mortar Combat was born.
I probably should have stopped right here, but, apparently, there quite a few people interested
in the events of those days. Their minds call them to fill up the void made by vicious curiosity
that delves deeper and deeper to clear space for pure knowledge of what actually happened during
the sacred ritual known as Lisp Game Jam
where miraculous Mortar Combat
was bor… —Nah, right, you got me there— No one cares, but I’m still gonna put some words
about it here nevertheless.
02 May 2017
Speaking generally, we can split end-users of a game into two groups: conventional gamers and
those who would like to tinker with game sources, if there’s such option. Several ways exist to
serve needs of both groups. In this piece of writing we would look into two of them:
via Quicklisp or bundling executable with required resources
(game assets, dynamic libraries, configs, etc) into downloadable package.
15 Mar 2017
Sharing is caring!
In the past there were a couple of requests to write about my experiences with various tools. Sometimes I just had something to say on a particular topic. Therefore, I finally decided to organize a place to share my thoughts and whatever knowledge I had acquired no one else probably cares about.
And here we are now. Welcome to boroblog! Place where I can polish my english writing skills at the expense of readers curiousity.