30 May 2021
Long time no see my C++ autowrapping rants. But several bindings later, :claw
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
all
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.
Continue reading...
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
manually. :claw
generated 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
libresect
(libclang
) - no
need to dive into llvm/clang development libraries any deeper, or so it seems so
far.
99% work done, so only another 99% left.
Continue reading...
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
into :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
into :claw
.
In this post, I’ll try to summarize how I envision this support being
implemented in :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.
Continue reading...
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 gamekit
a
chance!
I’ve received a couple questions about trivial-gamekit
future and what
direction it is heading.
Here’s my answer.
Continue reading...
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
guide on
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
whole 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.
Continue reading...
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 cl-bodge
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.
Continue reading...
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.
Continue reading...
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.
Continue reading...
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.
Continue reading...