freenode/#lisp - IRC Chatlog
Search
15:00:42
Xach
it looks like cl-dbi recently dropped its use of cl-syntax (which is nice) but it does break dbd-oracle
15:01:04
Xach
cl-syntax is the thing that prompted people to use @export (defun foo ...) rather than putting exports in defpackage
15:08:42
beach
minion: memo for jmercouris: Yes, the code for first-class global environments is written in entirely portable Common Lisp. But, of course, compilers of existing Common Lisp implementations don't use them, so you need a Cleavir-based compiler for that.
15:09:51
minion
jmercouris, memo from beach: Yes, the code for first-class global environments is written in entirely portable Common Lisp. But, of course, compilers of existing Common Lisp implementations don't use them, so you need a Cleavir-based compiler for that.
15:10:50
jmercouris
is SICL just a technology demonstrator, or do you eventually plan to make it a complete implementation that one can download and use?
15:13:13
beach
I have been busy with ELS submissions, but otherwise, I am working on code generation.
15:13:36
jmercouris
what percentage of the way is the task complete would you estimate? (making SICL a complete implementation)
15:14:32
beach
I don't think there is much left in order to make it work, but then there is a lot of work left to make it fast.
15:16:11
beach
I am secretly hoping that, once I have an executable, I will get a bit more help with the tedious work.
15:27:52
jackdaniel
ebrasca: do you mean why the name is "sicl"? afair beach said that there is no particular reason and it is not an acronym of anything (except of the CL suffix of course)
15:29:46
jackdaniel
ebrasca: my answer would be "why not?". that said sicl is implemented from scratch in full Common Lisp - luxury other implementations did not have - they have grown from previous lisp incarnations or are bootstrapped from other languages
15:30:38
jackdaniel
and using full Common Lisp instead of i.e subset gives you cleaner code; moreover some hardware characteristics has changed and they are taken into account when it is designed
15:32:18
jackdaniel
afaik sicl project has its own assembly emitter, I don't remember its name. I'd suspect that it is up to the cleavir's lir implementer to use it or to use some custom "LAP"
16:05:58
beach
ebrasca: I don't think it is appropriate for me to pollute #sicl with yet another series of utterances about why I started the SICL project. If you really want to know, join #sicl.
16:06:04
beach
The assembler that SICL uses is called Cluster, and it is a separate repository. You will likely be disappointed by it, because it does not have a surface syntax, since it is meant as a backend for compilers.
16:06:05
beach
If you were to write an assembly program for it, it would look like (list (make-instance 'instruction :mnemonic "MOV" :operands ...) (make-instance 'instruction :mnemonic "ADD" :operands ...))
16:08:19
pjb
Wouldn't it be trivial for a lisper to write: (defun assemble (instruction) (apply (function make-instance) 'instruction :mnemonic (symbol-name (car instruction)) :operands (mapcar (function assemble-operand) (cdr instruction)))) ?
16:09:16
beach
So rather than imposing a syntax on the user, and syntax seems to be what everyone can disagree upon, I allow for whatever surface syntax you want.
16:18:10
beach
ebrasca: I guess I can say one unique thing, which jackdaniel already hinted. SICL is the first implementation I know of that is written entirely using the full Common Lisp language.
16:18:11
beach
Even an implementation such as SBCL (with very little code in any other language) can not use the full language for certain modules, in particular the compiler. The SICL bootstrapping technique is unique, and allows me to use the full language for every module.
16:19:18
pfdietz
The SBCL type system implementation has some hairy code that would benefit greatly from being able to use CL's full object system.
16:44:18
|Pirx|
I'm playing with hunchentoot, I want it to handle all requests with the same function (looking up uris in a hash table and returning a fixed string), not maintaining a list of handlers, not serving files, what would be a good way to do that?
16:45:10
|Pirx|
define-easy-handler use a handlers list, depending on uris, but I want the same functions for everything
17:30:22
alandipert
hi all, i'd be grateful for any feedback from anyone on my ELS submission about my WIP browser-based implementation, JACL. thanks in advance - https://tailrecursion.com/~alan/documents/jacl-els-2020-draft.pdf
18:20:10
alandipert
_death https://gist.github.com/alandipert/bf7167580f385d7eb8f6dd0fb38698cf demonstrates most of what's currently available
18:28:26
alandipert
i've been plugging away at it for over a year though, with no signs of stopping. looking forward to collaborating on it with people after it reaches a certain point
18:31:24
Xach
alandipert: glad to see some review of jscl, which is what immediately sprang to mind for me
18:32:56
alandipert
Xach thanks, yeah, jscl... i've really enjoyed exploring jscl, it's filled with excellent ideas
18:33:34
alandipert
the way it supports multiple values is especially clever, i will probably end up with a similar approach
18:34:16
_death
hmm, disconnected so don't know if this went through.. I guess one question would be, what is the rationale for creating something new from scratch instead of improving an existing implementation
18:36:41
alandipert
_death i struggle with this, but decided ultimately that the jscl project goal was not in alignment with my own. and so i couldn't expect other users to want to collaborate on a rewrite
18:45:47
dlowe
and when you show them the amazing frob you made, they'll say yeah but I made a better frob using import frob and then extending it
18:49:13
vms14
the only stuff I've achieved with lisp was yet another html generator with code able to make you cry and some clx windows using xshape so they're characters moving on the screen
18:53:57
alandipert
_death a SPA type thing? or were you doing electron stuff? or something different
18:54:37
_death
alandipert: I usually avoid anything that requires javascript (my main browser has js disabled by default).. but for this it was kind of needed so I went all out
18:54:41
dlowe
the only reasonable choices are to enjoy lisp by yourself (and the very intelligent and good looking lispers on IRC) or use whatever the people around you are using
18:57:12
alandipert
how did you find yourself propagating effects in response to clicks? in a past life i've taken a Cells type approach, albeit from clojurescript
18:58:12
_death
alandipert: the probability propagation is made on the server.. if you mean the UI, it's react
18:59:01
alandipert
_death gotcha. so you are receiving full graphs from the server, and react is relegating them with the local UI state it sounds like?
19:00:02
_death
alandipert: currently probability propagation happens using a junction tree.. before that, I used variable elimination to query for each node.. also implemented pearl's belief propagation (extended for polytrees), and approximate approaches such as likelihood weighting
19:01:45
_death
I also implemented several BN structure/parameter learning algorithms.. and before that hidden markov model, bayesian classifiers, etc. basically I'm reading a book about probabilistic graphical models and implementing most of what it talks about
19:05:51
_death
alandipert: it takes a while to read a book that way.. and also, it's intertwined with many papers ;)
19:06:48
alandipert
Nilby i'm humbled you're familiar with it :-) working on that was ridiculously fun
19:18:43
alandipert
vms14 as far as i'm concerned, it it were possible to "win" at the reading of PAIP, the creator of SLip has won
19:22:36
alandipert
vms14 oh, just because he started with the compiler and bytecode interpreter in PAIP and ended up with a lisp system with cooperative multitasking and an emacs clone
19:31:08
Nilby
I just took it as entertainment. What I actually want to use is the other way around, the browswer inside emacs inside CL.
19:32:05
vms14
ebrasca: because I'm not able to find how to start playing withthat, more than with the turtle library
19:35:29
vms14
ebrasca: it's a "cursor" that goes drawing lines when it moves, just take a look at the slip site
19:36:48
vms14
the thing is I want to use slip for making a blog, but the documentation says "look at this shiny code I wrote and figure it by yourself :D"
19:42:22
Nilby
Well documented things destroy our opportunity to practice writing documentation, and independently understanding dense and arcane code.
19:52:46
vms14
docstrings talk about what a function does, write documententation is a thing we usually don't want to do, specially if we don't know how many people would use that
19:54:27
vms14
anyway I suppose lispers are used to look at the code and track what the heck the software is doing
22:06:10
Xach
A long time ago I bought a book about X, and it mentioned that some limits are what they are to accomodate Common Lisp tagged integers.
22:13:46
no-defun-allowed
Basically they allow a fixnum to be represented in one word without heap memory by jamming the fixnum in the pointer with a different bit pattern to actual pointers.
0:09:24
pjb
jfb4: the tag could be stored in a separate byte, perhaps near the word where the integer is stored, perhaps not. Perhaps it's not even associated directly with the integer, but instead, with the memory page, ie. the address where the integer is stored (integer or other type).
0:13:54
pjb
jfb4: but it is correct that the X11 protocol is specified leaving the upper 3 bits in its handles set to 0, to make it simple for lisp and other tagged languages to use it. https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html#Common_Types
0:15:14
pjb
jfb4: note that usually tags in fixnums are stored in the lower bits instead, since it makes it more easily to manipulate on a normal 32-bit processor (additions and subtractions can be performed without change, multiplications and division by prefixing or suffixing a shift operation on one of the arguments).