libera/#clasp - IRC Chatlog
Search
10:15:54
yitzi
drmeister: I see that you have a fmt library dependency in main. Did you decide to stay with the library method or the clone in repos.sexp?
13:10:29
Bike
like i said yesterday, i think it is basically working now. what's left to do is integrate cl:catch/throw, and to hunt for C++ functions to make or mark cooperative
13:11:04
Bike
direct calls to c++ functions might also be a bit dicey. i didn't just have the compiler put in a danger marker on all uses of multiple-value-foreign-call since that's what we use for our wrappers
13:12:51
drmeister
I spent the evening reading about ZPL - the "Zebra Programming Language" for RFID printers!
13:13:59
drmeister
They have very detailed manuals. https://support.zebra.com/cpws/docs/zpl/zpl_manual.pdf
13:16:52
drmeister
Writing the RFID tag is interesting. When you put a new roll of RFID labels into the printer it looks like you first have to locate where the RFID tag is in the labels. It feels like sounding, you move the label around, looking for the RFID tag. When you write to it you then read it back to verify that it was written.
13:17:52
drmeister
They have a CUPS driver for macOS and linux - but that looks like it's only useful for printing labels. To access the RFID hardware you have to drop down to using ZPL.
13:18:44
drmeister
I gotta write a little inventory database and a front end that generates RFID labels that we will stick on the bottles.
13:19:31
drmeister
I want to use cando and write an interface with jupyterlab. I wonder if I can do some kind of dedicated input form.
13:53:09
Bike
"like i said yesterday, i think it is basically working now. what's left to do is integrate cl:catch/throw, and to hunt for C++ functions to make or mark cooperative. direct calls to c++ functions might also be a bit dicey. i didn't just have the compiler put in a danger marker on all uses of multiple-value-foreign-call since that's what we use for
15:26:27
Bike
welp, i thought i broke everything, but actually koga synced cando to the new fmt version, which is incompatible with my clasp branch
15:34:39
Bike
--skip-sync fixed it, but for a minute i thought i screwed up something in exceptions.h, which gave me pages of errors in the scraper
15:39:19
drmeister
Ah - that got you too. The fmt changes were extensive in clasp, cando and seqan-clasp
15:39:55
drmeister
We still depend on boost libraries in clbind - that is going to be a bigger problem to get rid of it there.
15:40:13
drmeister
There's all this metaprogramming stuff in there that I don't know how to migrate.
15:41:59
drmeister
There's boost:is_base_and_derived... and there's std::is_base_of - are they the same? Related? There's very little documentation on what these template functions do - you have to read the crazy, painful code and understand C++ template programming at a deeper level than I do.
15:42:34
drmeister
That's just one template function - there are dozens of them I would need to translate.
15:43:11
yitzi
I think the basic strategy at this point to have `:skip-sync (:cando :seqan-clasp)` in your config.sexp. When you want to sync them you do `./koga --skip-sync=`
15:45:10
drmeister
And `./koga --skip-sync=` was a way to say that on the command line - that they do the SAME THING.
15:46:06
yitzi
If I am right then ./koga --skip-sync=` will assign an empty list to the skip-sync slot.
15:46:19
drmeister
I see, the command line overrides the config.sexp entry and when you don't provide anything after = you get the sync.
15:49:55
yitzi
Yes, that appears to work. Please not that you have to have the equals sign. Otherwise koga will assume that it is boolean option.
15:54:53
yitzi
Ok, so to summarize: If you are worried about repos updating during development then add `:skip-sync (:cando other-names)` to your config.sexp. You can force all repos to sync with `./koga --no-skip-sync`. The repo names are in repos.sexp.
16:00:49
Bike
the internet going down while i'm in the middle of debugging something over the internet is very frustrating
16:12:41
Bike
usually i don't mind syncing, and given that i pretty much only build cando to make sure i'm not breaking it i'd probably forget to update it otherwise, but this was an incompatible change
16:19:50
yitzi
Makes sense. When I am working on cando I usually push changes before koga runs so no harm syncing. Later I just squash if I have junk commits.
16:55:07
drmeister
https://github.com/borodust/claw-usb - usb library for Common Lisp. I’ll be cloning that.
17:27:37
Bike
so the only point of failure left will be lisp code that calls into c++ without going through a wrapper, if we have any of that
17:28:06
Bike
calling into C is ok since C does not do nonlocal exits (or at least only does so with longjmp, which we cannot account for
17:36:32
Bike
are we still using _evaluateDepth? it's part of the interpreter. it doesn't seem to be thread local, which seems wrong
18:33:35
yitzi
Any thoughts about making something like the `LOG` macro here? https://fmt.dev/latest/api.html#argument-lists
18:34:24
yitzi
Obviously called something else since there is already a LOG macro. Just to replace the `printf(%s:%d ....", __FILE__, __LINE__, xxxx)` stuff.
18:42:46
Bike
that seems like it could mean a lot of different things. can we not just use LOG? I think our existing macro is supposed to do about the same thing anyuway
18:43:42
Bike
drmeister: i think i could probably merge the new unwinder stuff into main now. i guess i could run ansi tests first but it passes ours
18:45:59
yitzi
Our existing LOG macro seems to be disabled if DEBUG_ON is not defined and also seems to check if debugging is enabled for FILE.
19:16:03
Bike
no, i'm just wondering if we couldn't ditch our existing LOG and replace it with one using fmt
19:17:15
Bike
i forgot to mark clos:interpret-dtree-program as cooperative. that probably kills a lot of unwinds, oops
19:22:43
yitzi
Which if I understand correctly, one issue would be that this won't work before the `_lisp` object has been created.
19:30:09
Bike
that said, it looks like the lisp_debugIsOn and lisp_debugLogWrite functions just grab a debug stream from the globals
19:33:41
yitzi
Would be nice to be consistent and be able to just use LOG() everywhere without regard to debugging level or lisp initialization.
19:40:14
Bike
i kind of mangled the telemetry in the new unwinder. i could switch it to record c++ unwinds, maybe?
20:05:59
yitzi
Looks there is still some issues with the upgrade to fmt. Some residual BF macros lying around.