<parjanya>
using quicklisp, having loaded cl-base64, I tried loading another package that uses base64 (a different package), but it complained that base64 is a nick for cl-base64, so it wouldn’t load. I opened a new repl and everything went fine, using base64 alone. this kind of clash shouldn’t happen, right?
ofc has joined #lisp
semz has quit [Quit: Leaving]
prince1 has quit [Ping timeout: 256 seconds]
<edgar-rft>
parjanya: I think you first must (shadow 'base-64) the nickname before you load the base-64 package, then it should work.
prince1 has joined #lisp
iAmDecim has joined #lisp
iAmDecim has quit [Ping timeout: 256 seconds]
prince1 has quit [Ping timeout: 256 seconds]
<pjb>
parjanya: yes, this kind of clash can happen, quicklisp doesn't guarantee anything (it only tests a single system per image).
<pjb>
parjanya: and developers don't listen to what I'm telling them, to name their packages and systems using the reverse domain-name convention.
<pjb>
parjanya: If instead of cl-base64, you used com.informatimago.common-lisp.rfc3548.rfc3548, you wouldn't have that problem!
<Xach>
parjanya: it's not a given that every project can load with every other one.
<Xach>
parjanya: when i compile the projects, i only verify that they load in isolation
<Xach>
"compile" in the sense of gathering them together, not in the sense of code compilation.
<oni-on-ion>
can't make a super image with all of QL ?
<Xach>
oni-on-ion: not without effort
<oni-on-ion>
mk
<no-defun-allowed>
Unlikely. At least two markdown implementations conflict in package name.
hutchi has joined #lisp
<pjb>
oni-on-ion: with an in-image virtual file system, you could install all the sources in an image, and compile and load them from the image.
lucasb has quit [Quit: Connection closed for inactivity]
<parjanya>
that’s ok, it’s just that this was the first time it happened :) it’s nice to know/remember about `shadow' too, tx edgar-rft
<pjb>
Yes, but shadow doesn't shadow packages! You would have to rename the existing package before loading the new system.
v_m_v has joined #lisp
<Fade>
how does such an in-image filesystem work?
<Fade>
this is an interesting idea.
semz has joined #lisp
<no-defun-allowed>
The filesystem could be a hash table of pathname ⇒ content vectors, if one wants to make a fake (most of) Un*x file system.
v_m_v has quit [Ping timeout: 258 seconds]
<Fade>
*nod*
<Fade>
the unordered nature of the keys in a hash map would complicate things a bit.
<no-defun-allowed>
Why is that? I don't think many filesystems preserve an order of names.
<no-defun-allowed>
Or, if you want a hierarchical file system, then you have nested hash tables for directories, and vectors for files.
<oni-on-ion>
pjb, that would be awesome =) i really like the smalltalk way of having sources+changesets in-image
ahungry has joined #lisp
<oni-on-ion>
also, CL is missing sandboxing abilities
leb has joined #lisp
leb has quit [Client Quit]
Oladon1 has joined #lisp
akoana has joined #lisp
Oladon has quit [Ping timeout: 240 seconds]
Khisanth has quit [Ping timeout: 250 seconds]
prince1 has joined #lisp
dilated_dinosaur has quit [Ping timeout: 256 seconds]
jprajzne has quit [Quit: jprajzne]
sloanr has quit [Ping timeout: 260 seconds]
Lycurgus has joined #lisp
sloanr has joined #lisp
Khisanth has joined #lisp
iAmDecim has joined #lisp
<pjb>
Fade: you use gray streams to access data stored in byte vectors or strings. You need to implement a directory structure, so you have to implement PATHNAMEs, and OPEN, DIRECTORY, etc… For those, there's no gray stream API. So you may have to use vfs:pathname and vfs:directory, vfs:open instead of CL.
ebzzry_ has quit [Read error: Connection reset by peer]
ebzzry_ has joined #lisp
gaqwas has quit [Quit: Leaving]
notzmv has joined #lisp
libertyprime has quit [Read error: Connection reset by peer]
Josh_2 has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 250 seconds]
Lord_of_Life_ is now known as Lord_of_Life
zaquest has joined #lisp
Josh_2 has quit [Quit: ERC (IRC client for Emacs 26.3)]
Josh_2` has joined #lisp
Josh_2` has quit [Client Quit]
Josh_2 has joined #lisp
ljavorsk has joined #lisp
aindilis has quit [Remote host closed the connection]
stepnem has quit [Ping timeout: 240 seconds]
aindilis has joined #lisp
v_m_v has joined #lisp
rixard_ has quit [Ping timeout: 250 seconds]
rixard has joined #lisp
iAmDecim has quit [Ping timeout: 240 seconds]
iAmDecim has joined #lisp
jasom has quit [Ping timeout: 272 seconds]
ljavorsk_ has joined #lisp
jasom has joined #lisp
ljavorsk has quit [Ping timeout: 260 seconds]
Posterdati has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
hutchi has joined #lisp
space_otter has quit [Remote host closed the connection]
twelvemonkeys has quit [Ping timeout: 250 seconds]
jeosol has quit [Remote host closed the connection]
orivej has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
twelvemonkeys has joined #lisp
joels has joined #lisp
orivej has quit [Ping timeout: 250 seconds]
stepnem has joined #lisp
bendersteed has joined #lisp
karlosz has quit [Ping timeout: 246 seconds]
joels has quit [Ping timeout: 250 seconds]
orivej has joined #lisp
v_m_v has quit [Remote host closed the connection]
rixard has quit [Ping timeout: 240 seconds]
v_m_v has joined #lisp
rixard has joined #lisp
hutchi has quit [Quit: hutchi]
orivej has quit [Ping timeout: 265 seconds]
narimiran has quit [Ping timeout: 256 seconds]
prince1 has quit [Ping timeout: 256 seconds]
narimiran has joined #lisp
hutchi has joined #lisp
``Erik has quit [Ping timeout: 264 seconds]
ebzzry_ has quit [Remote host closed the connection]
``Erik has joined #lisp
jeosol has joined #lisp
jmercouris has joined #lisp
bendersteed has quit [Remote host closed the connection]
dddddd has joined #lisp
ebzzry_ has joined #lisp
v88m has quit [Ping timeout: 250 seconds]
prince1 has joined #lisp
ebzzry_ has quit [Ping timeout: 265 seconds]
efm has quit [Remote host closed the connection]
efm has joined #lisp
narimiran has quit [Ping timeout: 246 seconds]
prince1 has quit [Ping timeout: 256 seconds]
SGASAU has joined #lisp
joels has joined #lisp
ebzzry_ has joined #lisp
narimiran has joined #lisp
z147 has joined #lisp
cosimone has joined #lisp
scymtym has quit [Ping timeout: 265 seconds]
scymtym_ has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
cosimone has quit [Quit: Terminated!]
jcubic has joined #lisp
Bike has joined #lisp
mood_ is now known as mood
scymtym_ has quit [Remote host closed the connection]
scymtym has joined #lisp
bitmapper has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
cosimone has joined #lisp
v_m_v has quit [Remote host closed the connection]
heisig has quit [Ping timeout: 240 seconds]
v_m_v has joined #lisp
orivej has joined #lisp
notzmv has quit [Read error: Connection reset by peer]
Kevslinger has joined #lisp
<dlowe>
pondering first-class packages for sandboxing
<dlowe>
eh, probably not.
<beach>
What do you have against first-class global environments?
makomo_ has joined #lisp
<dlowe>
I don't have to dislike something to be interested in alternatives.
ljavorsk_ has quit [Remote host closed the connection]
ljavorsk_ has joined #lisp
<beach>
Fair enough.
makomo has quit [Ping timeout: 240 seconds]
<dlowe>
I am a little concerned, though, that global environments are too big a hammer for sandboxing
<dlowe>
In any sandbox one wants to poke very specific holes
<dlowe>
whereas importing something into a global environment also introduces all its transitive dependencies
<beach>
That's news to me.
<beach>
I am planning to import just the functions COMPILE and COMPILE-FILE from the compiler first-class global environment into the default first-class global environment.
<beach>
Not the stuff that they call.
<dlowe>
okay, so I import COMPILE from CL to my global environment FOO, and call COMPILE from within FOO. Either a) COMPILE runs in FOO and can't access its dependencies or b) COMPILE runs in CL and macros have complete access to CL
<beach>
That's not how it works.
<dlowe>
Okay, where have I got astray? You can point me at a paper if it's easier than explaining on IRC
<pjb>
dlowe: environments are not named.
<dlowe>
yes, but humans like to have names to refer to things
<dlowe>
especially when describing a situation
Lycurgus has joined #lisp
<pjb>
dlowe: also, environment is an overloaded term in the hyperspec. There's at least three meanings to it.
<beach>
dlowe: You are assuming that function lookup is done at run-time. That would be too expensive. Instead, when code is loaded, it is "tied" to a particular environment. After that, a function such as COMPILE can be imported to other environments without the callees being imported.
<dlowe>
it's true. I'm using the word environment as beach is intending it
<dlowe>
beach: I'll read that and see if I get it.
<beach>
Feel free to ask if you don't.
<pjb>
beach: wouldn't a mere map of names to packages be enough for environment objects? If you put bindings in your environment objects, I think you'd want to provide a way to let user programs put their own bindings there too.
prince1 has joined #lisp
<beach>
User programs can definitely put bindings in a first-class global environment.
<pjb>
I mean, bindings of a different kind than CL bindings.
<beach>
What kind of bindings would that be?
<pjb>
For example, if I want to bind strings to value slots thru a hash-table, I may want to do that thru different hash-tables depending on the environment.
<beach>
Sure, just make a subclass of GLOBAL-ENVIRONMENT and put your hash table there.
<pjb>
Or perhaps thru the same hash-table, depending on the environment. I mean, several types of lisp objects have slots, which can serve to bind values.
<pjb>
Ok, sounds good.
<beach>
I don't see how a mapping from names to environments would be enough for the kind of functionality I am after.
<beach>
to packages, sorry.
prince1 has quit [Ping timeout: 256 seconds]
<pjb>
I think things will be clearer when we'll be able to exercise this new concept.
<beach>
I hope so.
jcubic` has joined #lisp
jmercouris has quit [Ping timeout: 264 seconds]
jcubic has quit [Ping timeout: 256 seconds]
v88m has joined #lisp
toorevitimirp has joined #lisp
<pjb>
For sandboxing, you may want to substitute CL stuff. If you use CL:COMPILE, you may not be able to substitute what you need to substitute. First, CL:COMPILE is allowed to opencode any CL operator. This means that (cl:compile nil '(lambda () (cl:open "foo"))) will be able to implement the semantics of the native cl:open, even if you define a different cl:open binding in the global environment.
<pjb>
beach: Said otherwise, once you introduce your environments, you need to provide your own compile function to ensure that it's used.
jmercouris has joined #lisp
<beach>
I do provide my own compile function.
<beach>
But it is still the FDEFINITION of the name CL:COMPILE in some first-class global environment.
Lycurgus has quit [Remote host closed the connection]
v_m_v has quit [Remote host closed the connection]
joels has quit [Ping timeout: 264 seconds]
duuqnd has joined #lisp
fanta1 has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
dale_ has joined #lisp
dale_ is now known as dale
TwoNotes has joined #lisp
cosimone has quit [Remote host closed the connection]
terpri has quit [Remote host closed the connection]
cosimone has joined #lisp
terpri has joined #lisp
oni-on-ion has quit [Ping timeout: 246 seconds]
ljavorsk_ has quit [Ping timeout: 256 seconds]
v_m_v has joined #lisp
amerlyq has quit [Quit: amerlyq]
v_m_v has quit [Read error: No route to host]
v_m_v has joined #lisp
v_m_v has quit [Remote host closed the connection]
luckless has joined #lisp
fanta1 has quit [Quit: fanta1]
dilated_dinosaur has quit [Ping timeout: 264 seconds]
<jcowan>
Part of the problem is that CL doesn't allow renaming of either packages or the symbols in them. In better (ahem) module systems, either or both of these may be possible.
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
<Xach>
You can rename packages in Common Lisp.
TwoNotes has quit [Quit: Leaving]
<Xach>
It is done via RENAME-PACKAGE.
<heisig>
You can also transfer the symbol value, symbol function, symbol plist and all documentation to another symbol via SETF.
<jcowan>
Correct about packages, sftn.
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
<jcowan>
Passing everything to another symbol doesn't leave the identity visible to compilers, though: (define foo (x) (car x)) might or might not be inlined.
<jcowan>
s/define/defun/
ryan_ has joined #lisp
ljavorsk_ has joined #lisp
<heisig>
Oh, right. To do so, you would also have to migrate all declarations and the inline information on that symbol. That is not possible, at least not in portable code.
<heisig>
But I wouldn't recommend this way of 'renaming' symbols anyway. I just wanted to point out that it is possible.
toorevitimirp has quit [Remote host closed the connection]
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
swills has quit [Ping timeout: 256 seconds]
dilated_dinosaur has joined #lisp
ebzzry_ has quit [Remote host closed the connection]
sonologico has quit [Quit: Leaving]
<beach>
Renaming a symbol sounds like a bad idea.
swills has joined #lisp
ljavorsk_ has quit [Ping timeout: 264 seconds]
xkapastel has joined #lisp
ebzzry_ has joined #lisp
Cymew has quit [Ping timeout: 256 seconds]
Inline has joined #lisp
prince1 has joined #lisp
Necktwi has quit [Read error: Connection reset by peer]
joels has joined #lisp
orivej has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
iAmDecim has quit [Ping timeout: 264 seconds]
prince1 has quit [Ping timeout: 250 seconds]
Necktwi has joined #lisp
iAmDecim has joined #lisp
orivej has quit [Ping timeout: 264 seconds]
iAmDecim has quit [Ping timeout: 265 seconds]
ebzzry_ has quit [Read error: Connection reset by peer]
shka_ has quit [Ping timeout: 256 seconds]
shka_ has joined #lisp
jprajzne has quit [Quit: Leaving.]
luni has joined #lisp
jmercouris has quit [Remote host closed the connection]
cosimone has quit [Read error: Connection reset by peer]
buffergn0me has joined #lisp
cosimone has joined #lisp
EvW has joined #lisp
sauvin has quit [Ping timeout: 264 seconds]
sauvin has joined #lisp
jprajzne has joined #lisp
oni-on-ion has joined #lisp
sjl_ has joined #lisp
makomo_ has quit [Ping timeout: 256 seconds]
<jcowan>
Depends on if you think of it as a symbol (runtime object) or an identifier. In the latter view you are saying "In this scope of code foo (imported from module baz) will be known as bar, but it is still really foo."
<jcowan>
It is a purely compile-time notion. You could simulate it with define-symbol-macro.
makomo_ has joined #lisp
oni-on-ion is now known as ear-the-art
v_m_v has joined #lisp
sonologico has joined #lisp
cosimone has quit [Quit: Terminated!]
McParen has left #lisp [#lisp]
hiroaki has quit [*.net *.split]
v0|d has quit [*.net *.split]
kingcons has quit [*.net *.split]
ssafar has quit [*.net *.split]
stux|RC has quit [*.net *.split]
stux|RC-only has quit [*.net *.split]
MichaelRaskin has quit [*.net *.split]
cross_ has quit [*.net *.split]
nckx has quit [*.net *.split]
shinohai has quit [*.net *.split]
niceplace has quit [*.net *.split]
Kabriel has quit [*.net *.split]
Krystof has quit [*.net *.split]
fouric has quit [*.net *.split]
v88m has quit [Read error: Connection reset by peer]
kingcons has joined #lisp
fouric has joined #lisp
ssafar has joined #lisp
cross has joined #lisp
niceplace has joined #lisp
nckx has joined #lisp
v0|d has joined #lisp
hiroaki has joined #lisp
stux|RC-only has joined #lisp
shinohai has joined #lisp
Kabriel has joined #lisp
stux|RC has joined #lisp
rippa has joined #lisp
joels has quit [Ping timeout: 240 seconds]
KDr23 has joined #lisp
KDr22 has quit [Ping timeout: 260 seconds]
EvW has quit [Ping timeout: 260 seconds]
SGASAU has quit [Ping timeout: 256 seconds]
ear-the-art has quit [Ping timeout: 246 seconds]
prince1 has joined #lisp
hlavaty` has quit [Remote host closed the connection]
prince1 has quit [Ping timeout: 256 seconds]
Lycurgus has joined #lisp
ggole has quit [Quit: Leaving]
sauvin has quit [Read error: Connection reset by peer]
xuxuru has joined #lisp
Codaraxis has joined #lisp
Krystof has joined #lisp
Codaraxis__ has quit [Ping timeout: 265 seconds]
slyrus_ has quit [Quit: Leaving]
EvW1 has joined #lisp
duuqnd has quit [Read error: Connection reset by peer]
duuqnd has joined #lisp
joels has joined #lisp
Fare has joined #lisp
MichaelRaskin has joined #lisp
<aeth>
beach: Is there ever a chance that SBCL and CCL get first class global environments or is it too tied to SICL?
<beach>
I have no control over SBCL or CCL. It is highly unlikely that their respective maintainers will accept that work though.
<beach>
Maybe, just maybe, after SICL is finished and people understand the value of having first-class global environments it could change.
<beach>
I'm off to spend time with my (admittedly small) family. I'll be back tomorrow morning (UTC+1).
<aeth>
I'm just thinking about it being a similar situation to e.g. package local nicknames, which were around for forever, but that most people didn't use until (nearly) everyone supported it.
orivej has joined #lisp
xuxuru has quit [Quit: xuxuru]
xuxuru has joined #lisp
<phoe>
aeth: that only depends on who will implement it in CCL.
<phoe>
If someone implements it, I doubt CCL maintainers will not accept the PR - provided that it doesn't regress anything.
<Xach>
phoe: why?
<Xach>
New things often require good understanding and ongoing maintenance - that can be an incentive not to accept them.
<aeth>
Xach: New things whose purpose is compatibility with other implementations are probably more likely to be accepted, though.
<aeth>
I'm surprised no one has ported sb-unicode, with a portable portability library on top, yet.
<aeth>
There's probably a few more things that are obviously missing libraries.
v_m_v has quit [Remote host closed the connection]
<phoe>
Xach: I could someday try hammering the change into CCL once it's there, and writing a test suite for it. And possibly maintain a forked version until the change stabilizes.
bitmapper has quit [Read error: Connection reset by peer]
bitmappe_ has joined #lisp
hiroaki has quit [Ping timeout: 265 seconds]
<Xach>
aeth: i don't think that is a given.
<Xach>
aeth: for some, "compatibility with other implementations" does not always align with "keep implementation maintainable by a very small team and keep customers happy"
hiroaki has joined #lisp
<Xach>
I am not saying they are always in conflict, but that alignment is not automatic
ljavorsk_ has joined #lisp
leb has joined #lisp
josemanuel has joined #lisp
prince1 has joined #lisp
efm has quit [Quit: Konversation terminated!]
gareppa has joined #lisp
efm has joined #lisp
v_m_v has joined #lisp
v_m_v has quit [Client Quit]
prince1 has quit [Ping timeout: 260 seconds]
dale has quit [Quit: dale]
duuqnd has quit [Quit: Leaving]
makomo_ has quit [Quit: WeeChat 2.7.1]
cosimone has joined #lisp
shka_ has quit [Ping timeout: 250 seconds]
sonologico has quit [Read error: Connection reset by peer]
dale has joined #lisp
joels has quit [Ping timeout: 265 seconds]
gareppa has quit [Quit: Leaving]
leb has quit []
luni has quit [Remote host closed the connection]
semz has quit [Ping timeout: 246 seconds]
Lycurgus has quit [Remote host closed the connection]