libera/#commonlisp - IRC Chatlog
Search
6:46:05
resttime
Oh nice and I see that (upgraded-array-element-type 'bignum) ; => T which makes sense since to me since bignum would be considered more abstraction
9:58:14
aeth
in SBCL, the rule of thumb is to either inline or to box your own floats with double-float arrays (which can be 0D, 1D, 2D, ...) or structs with double-float typed slots, but you have to be careful about implicit return values because those will still cons if they leave function scope
9:58:52
aeth
Not every implementation will do the struct part. Afaik, only CLISP doesn't do (upgraded-array-element-type 'double-float) => double-float
10:00:08
aeth
By implicit return value I mean e.g. (incf (aref your-double-float-array 0)) ; returns a double-float, will still cons if that part is implicitly returned from your function
10:02:10
aeth
You can get around the function boundary issue by returning nothing (i.e. only mutate these double-float data structures), by inlining (only good for small functions like add-doubles), or by coercing to a single-float (you lose precision but maybe you only need it in the intermediate steps and not the final result)
10:02:48
aeth
(Or, you know, tolerating exactly one boxing, for the final result, because it's still much better than having lots of boxing for every operation)
11:49:07
jackdaniel
standardizing networking, threads and metaobject protocol would be nice, but it is not that it would change much - we already have portability layers for these
11:49:28
jackdaniel
as of the rest - do you have anything important in mind that is left out (standard-wise)?
11:56:01
jackdaniel
perhaps it didn't make it there because that would make choices for implementing common lisp more limited
11:57:37
jackdaniel
either way, I wouldn't personally consider this part important enough to mandate the standard revision
11:59:01
drakonis
though something i find worth calling a revision for is to clean up the deprecated functions and have things be a bit more consistent
11:59:39
jackdaniel
would you deliberely break code that works for decades without a hitch? even C standard revisions aim at being backward-compatible
12:00:48
jackdaniel
but you can do that without a new standard- just create a library that leaves the package CL as is and put your own versions in the package CL22
12:02:22
jackdaniel
revising a standard (putting aside the cost; people often brought that argument), takes time and effort, so there should be a tangible reason to do so. if you may resolve some issue by creating a library using the existing standard, then why to propose a new standard?
12:04:33
drakonis
to be fair, i find the notion that having to spend money on revising the existing ansi standard to be silly
12:05:32
drakonis
and i'm working off the assumption that the revision would inevitably bring about some changes to the language internals
12:06:09
drakonis
since it could mandate things that werent part of the original spec like tail call optimizations and lexical scoping
12:06:52
jackdaniel
it is easier to gather a group of people who know what they are doing if you allow them to secure their wellbeing (i.e in a form of a salary), that is orthogonal to dedication; and dedication alone is not a guarantee of quality
12:12:09
drakonis
jackdaniel: sure you can invoke letf everywhere, but you can't define functions inside the scope of another and call them without it
12:14:07
jackdaniel
I thought that we are discussing lexical scoping in common lisp; but still I don't understand what do you mean by cl not having a lexical scope under certain circumstances?
12:15:34
drakonis
if i invoke defun inside another function, it will create the function inside the package's namespace instead of being local to it
12:16:07
_death
anyway, the link I was looking for was https://soundcloud.com/zach-beane/peter-seibel-common-lisp
12:19:55
_death
it's also unclear what deprecated functions drakonis is referring to, and what should be done with them
12:20:44
jackdaniel
I have a strong impression that you know little of you are talking about, so I will detach myself from the discussion
12:26:50
_death
DEFUN defines a function whose name is in the global environment.. neither have anything directly to do with "dynamic scoping"
12:45:20
beach
drakonis: When you say that you find the notion that having to spend money on revising the existing ansi standard to be silly, how would you go about revising it then?
12:46:16
drakonis
i had assumed it had to do with spending money to get it through the ansi approval process as opposed to spending money on people
12:47:43
beach
Oh, I see. You were specifically referring to ANSI. I strongly suspect that ANSI took a very small amount of money, and that the main cost was was for people to travel and eat.
12:48:58
drakonis
the assumption comes from whenever the topic is brought up, someone talks about the money spent on the ansi standard
12:50:12
_death
you need to pay people (or the organizations they represent) to work on it.. standardization involves both users and implementors
12:51:19
beach
And I don't think the standards organization is involved in that process at all. Neither the organization nor the cost.
12:53:38
beach
But perhaps the role of standards organizations is no longer needed, now that we have Digital Object Identifiers.
12:54:03
Bike
"there's no money for that" can also be a proxy for "there's insufficient interest compared to the effort required"
12:55:35
pjb
Perhaps a startup could give an official stamp on "standard" documents. With some quality criteria…
12:58:50
Bike
it's possible i'm just bad at it, but whenever i've set out to write a standardsy proposal for WSCL, it takes me like, half an hour minimum, usually more
12:59:09
Bike
and they've all been extremely minor things like "this description uses the wrong variable names"
13:00:31
jackdaniel
imo some of that could be alleviated with better tools; making a pull request on github is quite a hore
13:04:42
jackdaniel
I'm thinking more about collaborative editing and such, where the road from the input editor to the repository is negligible
13:33:05
beach
drakonis: So I think you would need to gather representatives from the commercial Lisp vendors, from the maintainers of FLOSS Common Lisp implementations, from major users like Google, SISCOG, Ravenpack, etc., and to either convince them to spend a lot of their time for free, or find the money to pay them (or their employers) for their effort.
13:35:00
beach
If the revision is just in the spirit of WSCL, the effort might not be that great, but if you want to add new functionality, like environments, this is going to take much more time.
13:41:22
Shinmera
you not only need to pay them money, you need to do something much harder: convince them it's a good idea :)
13:42:16
jackdaniel
I'm sure some of them will be already convinced that giving them money is a good idea ,)
14:18:24
Shinmera
In other news, I've been working on a system that can generate quicklisp dists. As part of that, it also allows parsing out the information in quicklisp-projects, and thus recreating your own copy of the official quicklisp dist.
14:18:41
Shinmera
One issue is that a number of project source links have since died and are no longer accessible :(
14:34:30
aeth
hexology: speaking of which, in case anyone didn't hear the news, Gitlab was planning on getting rid of free-tier repositories that were "inactive" for over a year, which almost seems maliciously targeted at Lispers given how many of them just throw together a random misc package that's more or less complete
14:35:29
aeth
Still making me reconsider gitlab.com hosting. Only one of my current repositories is "active" under Gitlab's criteria even though that one in particular depends on several others.
14:35:43
hexology
Shinmera: i've been impressed at how many "complete" packages you seem to have floating around
14:36:14
hexology
aeth: indeed, it's a shame because lisp programmers seem to have embraced gitlab as the go-to "not github" option. i guess gitlab-the-company is finding that free tier is not winning them the kinds of customers and revenue streams that they need.
14:36:16
aeth
(And, no, I won't use Github. I don't like "social coding" (i.e. issue tracker drama over nonsense; the barrier to entry is a feature, not a bug) and my hatred for Microsoft software knows no limits.)
14:36:29
hexology
personally i pay for sourcehut but not everyone wants to or is able to pay for git hosting for their little projects
14:36:55
hexology
who runs common-lisp.net? i'd be happy to put down some money every month to support community git hosting under common-lisp.net/dev
14:38:03
hexology
i don't have the same ire for github as you aeth but monoculture always makes me nervous. again, i think this is something that lisp programmers appreciate more than others.
14:38:24
aeth
Isn't common-lisp.net self-hosted gitlab? It should experience similar issues to gitlab.com, i.e. "our stock is being punished so we need to stop being nice and start maximizing profit"
14:38:49
aeth
although maybe someone will maintain a fork of the massive spaghetti mess that is the open source gitlab distribution
14:39:34
hexology
maybe they could relicense a la mongodb but actually obstructing self-hosting seems like brand suicide for sure
14:40:04
aeth
they're a VC-funded, now IPOed, company that just switched from the "give away everything for free to maximize users and mindshare" mode to the "ruthlessly extract profit" mode, as they all do eventually (if they don't just outright shutdown after an acqui-hire)
14:40:21
aeth
which is unfortunately making me have to think about alternatives to code hosting instead of coding
14:40:56
hexology
fwiw i never actually liked gitlab, i thought it was a clunky and slow imitation of github, like the worst of github and bitbucket with the main advantage being "it's not github"
14:41:04
drakonis
an especially egregious example is patreon, which has an inherently sustainable business model
14:41:17
aeth
plus, if Gitlab does ruin itself, Github absolutely will ruin itself too, because "I'm going to switch to Gitlab" is pretty much the only thing keeping Github in check when it makes bad decisions
14:41:25
hexology
right, vc money turns sustainable businesses and turns them into unsustainable rent-extraction devices
14:41:45
hexology
aeth: i doubt it, github at this point i think is doing what all MS products do and becoming an enterprise staple
14:42:22
aeth
hexology: I mean, just look at what happened to Internet Explorer after Netscape failed, or, rather, what didn't happen to Internet Explorer after Netscape failed (Microsoft let it stagnate on IE6 because they could)
14:43:08
hexology
sorry :) i actually think it's important to be somewhat forward-looking about community sustainability and avoiding a massive wave of link rot
14:43:45
aeth
It is a bit of a crisis that the #2 hoster just said "if you don't use a language where you constantly have to patch finished libraries every year to keep those libraries running, your project is 'inactive'"
14:45:01
Shinmera
Anyway, the Redist system is here in case anyone wants to start hosting their own dist or something. https://github.com/Shirakumo/redist
14:45:20
Shinmera
I'm still working out some minor kinks and need to update some docstrings, but it's pretty much done.
14:47:16
shinohai[m]
https://github.com/Shirakumo/redist << hey this is pretty neat actually Shinmera
14:48:15
Shinmera
Sure. I'd like to do more in the testing department, that bit's undercooked. The idea is that hopefully it'll allow someone else to take over the main quicklisp dist with minimal pains, in case anything ever happens to Xach.
14:48:36
Shinmera
And in the interim, of course allow people to create their own custom dists for whatever purposes.
15:35:56
NotThatRPG
hexology: You should be able to host your projects on cl.net's GitLab -- I forget the actual means to do this, but it's on (or near) their home page
15:38:26
morganw
If the cost was legitimately a problem I think sourcehut are open to giving financial help: https://sourcehut.org/pricing/
15:40:06
NotThatRPG
Shinmera: Looking at redist, I'm wondering why you scan the ASDF files instead of loading them. You might miss some dependencies that way. Hm.... The obvious technique would be to load up an ASDF system definition in a subsidiary Lisp, but CL invoking a new image is really hard because CL doesn't have any equivalent to `sys.executable` in python
15:43:37
NotThatRPG
Shinmera: There are some things that `defsystem-depends-on` still does not handle. As I said, the best thing would be to fire up a new lisp process, load the system in there, and interrogate that lisp process. But that's not possible in portable CL. :-(
15:44:28
NotThatRPG
I guess that's non-trivial, because you would also need to know what, if any, core is loaded
15:44:40
Shinmera
Anyway, not sure what you mean by "things that defsystem-depends-on does not handle".
15:45:31
NotThatRPG
Some ASDF extensions have issues because by the time they are loaded, ASDF can fail to parse the defsystem containing them (because that defsystem contains extensions that must be loaded prior to parsing)
15:47:19
NotThatRPG
Anyway, it would be great if CL offered a way to open up a new lisp process with the same characteristics as the invoking process.
15:48:29
NotThatRPG
oh, yes, we can fork, but you can't do the trivial python thing of using `sys.executable` to find what to fork.
15:49:48
NotThatRPG
Fare tried to do this in a library for testing, but it's quite cumbersome, and it relies on populating a lot of environment variables. I wonder if we could enhance UIOP/launch-process to make this easier...?
15:51:40
NotThatRPG
White_Flame: Yes, that's why UIOP would be a good place for this. UIOP could probably also give a portable "loaded core," but that might be a little unpleasant to manage. Just a lot of drudgery to cover all of the implementations.
15:54:00
NotThatRPG
OK then.... I should add a GL issue for this. But first I need to get on my bicycle and head downtown...
16:01:14
Shinmera
But also, I actually *can't* simply load the ASD in another process and read out the deps. That would *miss* dependencies that are feature-test-excluded.
16:49:46
Shinmera
Comparing with the quicklisp systems.txt that lists dependencies the differences seem to be down to: quicklisp including asdf as a dependency on a lot of systems? even if that system does not list the dependency explicitly. quicklisp including dependencies that seem transitive, but only on some systems and not others. and quicklisp missing a bunch of dependencies that are under feature flags.
16:50:50
Shinmera
The diff is a pain in the ass to look at as a consequence, but so far I have not spotted an occurrence where my system misses a dependency.
17:19:18
Shinmera
Okey, I now also deal correctly with folks that do asdf:load-system (or any variant thereof) in their .asds.
18:23:58
NotThatRPG
Shinmera: I haven't had time to check, but I do think there are still places where defsystem-depends-on does not work.
18:27:26
NotThatRPG
I don't think it's necessarily a "boo" to the people still hand-loading dependencies.
18:35:39
pjb
NotThatRPG: (uiop:raw-command-line-arguments) #| --> ("/usr/local/src/ccl/dx86cl64") |#
18:36:23
pjb
NotThatRPG: so the executable path would be: (first (uiop:raw-command-line-arguments)) #| --> "/usr/local/src/ccl/dx86cl64" |#
18:36:59
pjb
NotThatRPG: you'd have to know the options of each CL executable and how it finds the image, either from arguments or by default.