actuallybatman has quit [Ping timeout: 246 seconds]
semz has joined #lisp
actuallybatman has joined #lisp
mathrick has quit [Ping timeout: 248 seconds]
<libertyprime>
=/quit
libertyprime has quit [Quit: leaving]
<semz>
Is FORMAT required to detect whether its string arguments share data if *print-circle* is set? (let ((x " and share") (*print-circle* t)) (format nil "Let's share~A~A~A!" x x x)) gives "Let's share#1= and share#1##1#!" instead of "Let's share and share and share and share!".
mathrick has joined #lisp
<semz>
on CCL 1.11.5 at least
bexx has quit [Remote host closed the connection]
<grewal>
fwiw, cmucl, sbcl, and clisp print "Let's share and share and share and share!" with that code
<grewal>
and clasp and ecl.
Aruseus has joined #lisp
Nomenclatura has quit [Quit: q]
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
RaycatWhoDat has joined #lisp
<RaycatWhoDat>
What's the commonly used library for dealing with the filesystem in Common Lisp?
<RaycatWhoDat>
UIOP is proving to be more difficult than expected.
Aruseus has quit [Quit: leaving]
elfmacs has joined #lisp
RaycatWhoDat has quit [Quit: ERC (IRC client for Emacs 26.1)]
flazh has quit [Ping timeout: 248 seconds]
Nomenclatura has joined #lisp
Jesin has quit [Quit: Leaving]
leb has quit []
Jesin has joined #lisp
Nomenclatura has quit [Quit: q]
leb has joined #lisp
semz has quit [Ping timeout: 248 seconds]
Lycurgus has joined #lisp
ym555 has joined #lisp
atgreen_ has quit [Remote host closed the connection]
atgreen has joined #lisp
semz has joined #lisp
techquila has quit [Remote host closed the connection]
techquila has joined #lisp
igemnace has joined #lisp
ym has joined #lisp
Josh_2 has quit [Quit: ERC (IRC client for Emacs 26.1)]
techquila has quit [Remote host closed the connection]
Lord_of_Life has quit [Ping timeout: 272 seconds]
techquila has joined #lisp
Lord_of_Life has joined #lisp
atgreen has quit [Ping timeout: 248 seconds]
PuercoPop has joined #lisp
<beach>
Good morning everyone!
<Lycurgus>
moin beach
ym555 has quit [Quit: leaving...]
zotan has quit [Ping timeout: 258 seconds]
zotan has joined #lisp
dddddd has quit [Remote host closed the connection]
esrse has joined #lisp
torbo has quit [Remote host closed the connection]
[rg] has joined #lisp
[rg] has left #lisp [#lisp]
karlosz_ has joined #lisp
orivej has quit [Ping timeout: 268 seconds]
shifty has joined #lisp
Bike has quit [Quit: Lost terminal]
zmt00 has quit [Quit: Leaving]
zmt00 has joined #lisp
dale has quit [Quit: dale]
Necktwi has quit [Ping timeout: 272 seconds]
nowhere_man has joined #lisp
Necktwi has joined #lisp
nowhereman has quit [Ping timeout: 272 seconds]
marusich has joined #lisp
Lycurgus has quit [Quit: Exeunt]
marusich has quit [Remote host closed the connection]
edgar-rft is now known as mysql
mysql is now known as edgar-rft
Necktwi has quit [Ping timeout: 244 seconds]
femi has joined #lisp
zhlyg has joined #lisp
karlosz_ has quit [Quit: karlosz_]
ym has quit [Remote host closed the connection]
karlosz_ has joined #lisp
vlatkoB has joined #lisp
meowray has left #lisp ["WeeChat 2.2"]
<Elronnd>
is there a way to check if a file contains valid code, without loading it?
<no-defun-allowed>
define "valid"?
<beach>
Elronnd: You can get some information by compiling it.
jmercouris has quit [Remote host closed the connection]
m00natic has joined #lisp
lnostdal has quit [Quit: "Fascism, Nazism, Communism and Socialism are only superficial variations of the same monstrous theme—collectivism." -- Ayn Rand]
zooey has quit [Ping timeout: 256 seconds]
varjag has joined #lisp
atgreen has quit [Remote host closed the connection]
<shka__>
jmercouris: i heared good things about CEPL
<jmercouris>
I think the answer is basically just that, opengl or you'll have to maintain platform dependent bindings
<pjb>
jmercouris: then how can you conclude that there is only opengl?
<jmercouris>
shka__: indeed, but still opengl
<pjb>
Just use pgl!
<shka__>
jmercouris: well, there is a vulcan, but writing in vulcan is daunting
<shka__>
otherwise, DX is windows only, metal is mac only
<|3b|>
you need platform specific code to open windows for OpenGL or vulkan, and apple doesn't seem to want to support either
<jmercouris>
no, definitely not, opengl support on macOS is really lacking
<shka__>
i can't speak for OSX
<jmercouris>
I can speak a little bit, metal API far outperforms others
<|3b|>
(ms doesn't want to either, but let people write their own drivers so can't enforce it as well)
<shka__>
it used to have decent support for opengl circa 2010
<jmercouris>
you can write your own drivers in macOS
<jmercouris>
however, installing them... huge security issue
<|3b|>
shka__: yeah, it still has decent support for opengl circa 2010 :/
<shka__>
gotcha
<jmercouris>
so if someone wanted a cross platform graphics library they would have to abstract these APIs somehow
<aeth>
jmercouris: Most of the graphics work seems to be on OpenGL paired with something like SDL (cl-opengl is essentially universal; cl-sdl2 is popular, but not universal)
<jmercouris>
and they would have to understand both of them really well
refpga has quit [Ping timeout: 258 seconds]
<aeth>
jmercouris: The only real way to support macOS in the future is with moltenvk and Vulkan, but Vulkan isn't really a CL priority at the moment.
<aeth>
I mean, the way I see it is, if people just don't drop support for macOS altogether it'll basically be entirely through moltenvk going forward until Apple adopts Vulkan 10-15 years late.
<|3b|>
yeah, moltenvk sounds promising, though havent tried it myyself
<jmercouris>
pjb: still uses JVM/not really high performance
refpga has joined #lisp
<|3b|>
presumably opengl will continue to be supported by metal/vulkan wrappers even if vendors don't, like ANGLE does on dx
<jmercouris>
|3b|: can you please clarify what you mean? I don't understand
<jmercouris>
are you saying that people will write code that wraps opengl -> metal equivalent / vulkan equivalent calls?
<|3b|>
at some point there will probably be an opengl implementation with vulkan and/or metal backend
<jmercouris>
oh ok
<jmercouris>
so kind of like what I said
<jmercouris>
probably there will be some inefficiencies associated with doing so
<jmercouris>
as I assume the APIs concepts must be at least a little bit different
<|3b|>
probably not horrible, drivers are already doing lots of inefficient things for gl anyway :)
<aeth>
You're not going to be using an Apple computer for maximum performance here, anyway, so a little inefficiency is probably not an issue.
crystalball has joined #lisp
<|3b|>
biggest thing about the new apis (vulkan, dx12,metal) is just being a lot more explicit about what you are doing
<aeth>
(I mean, unless you pay like $15,000 or whatever.)
shifty has quit [Ping timeout: 248 seconds]
<|3b|>
still the same hardware underneath, so no real fundamental differences in features, and the newer APIs match newer hardware better anywayy
<|3b|>
so if you need absolute peak performance, you should probably be looking at those, or at least using GL in a way that translates fairly well to them
<jmercouris>
I don't understand why they couldn't have just extended openGL to accomodate new features and versioned it up?
<jmercouris>
now we have 3 different vendor implementations
<|3b|>
well, MS and apple would have still ignored it either way :/
<jmercouris>
and it makes it way harder for any application developer to make anything cross-platform, though I suspect it is on purpose, and for financial reasons
<|3b|>
also too much implicit state in GL, and things like that
<aeth>
jmercouris: The architecture was based on 90s or even 80s SGI workstations.
<aeth>
It's impressive it lasted this long.
<pjb>
jmercouris: so what? You just asked for an alternative for opengl…
<ggole>
iirc they want to remove features, not add them
<|3b|>
would have basically ended up with a whole new API sitting next to the existing one, just with a GL prefix instead of VK
<jmercouris>
pjb: that's true, I didn't specify it had to be faster D:
<ggole>
It would be nice if they provided a library for running old GL code on top of the new approach
<pjb>
jmercouris: cl-cuda?
<|3b|>
and they do extend GL to incorporate new features, that's half the problem with it :)
<aeth>
ggole: Iirc, nvidia drivers do let you mix OpenGL and Vulkan as an extension.
<aeth>
Probably not as clean as an open-source-on-vulkan OpenGL, though.
<|3b|>
they just /also/ make vulkan now as well, with less of the old stuff bogging it down
<jmercouris>
it is interesting that you guys keep on bringing up drivers
<jmercouris>
are you saying these libraries are literally talking directly to the drivers?
<jmercouris>
this isn't done via syscalls of some sort?
<pjb>
Yes, for faster.
<|3b|>
there is a system opengl library that talks directly to drivers
<jmercouris>
wow, that sounds unbelievably complex
<jmercouris>
I can only imagine what a monemuntal effort it was to make opengl
<|3b|>
and under the hood, it is probably pretty much just passing a table of function pointers directly to the app on any platform that isn't apple
<pjb>
jmercouris: I always reach the same conclusion: write it yourself, so you maximalize your happiness.
<aeth>
jmercouris: Remember, you're talking to a specialized computer that often is its own discrete piece of hardware.
<|3b|>
yeah, each hardware vendor implements all of opengl, which is another thing people don't like about it :/
<jmercouris>
pjb: I'm slowly getting there :\
<ggole>
The vendor's driver is in charge of things like compiling shader code to whatever internal machine code they use
<jmercouris>
|3b|: probably there are also quirks dependent on the vendor implementation?
<|3b|>
vulkan is supposed to be a lot easier for hardware vendors to implement, so theoretically they can get it closer to correct faster
<|3b|>
jmercouris: yeah :/
<jmercouris>
that would explain perhaps why some games run better on some cards and crash on others?
<|3b|>
right
<jmercouris>
wow, this is absolutely terrible
<jmercouris>
I didn't realize the state of the GPU ecosystem
<jmercouris>
I guess that's what happens when nobody can agree on an API
<ggole>
It's worse than that, vendors do things like ship game-specific bug workarounds in their drivers
<aeth>
jmercouris: there's some forum post where someone explains what vendors do in game drivers
<|3b|>
sometimes its bugs in drivers for 1 hardwarre, sometimes drivers accept things they possibly shouldn't, and people dev for that and don't notice their code has bugs, and it breaks on stricter drrivers
<aeth>
jmercouris: it is really bad
<jmercouris>
I've heard the opposite being true as well, to sabotage games that don't use their APIs
Fr0stBit has quit [Remote host closed the connection]
<|3b|>
jmercouris: that's what happens when they /did/ agree on an api :p
<|3b|>
it's what happens when someone can't control the entire market and force them to do things like MS did with dx
<aeth>
jmercouris: essentially, there's these big, complicated, poorly-explained APIs and the engines and games use these APIs incorrectly, and instead of fixing the upstream, each vendor then rewrites things to make things work
<jmercouris>
sounds all good and logical
<jmercouris>
and we all have to deal with this because there is not an OS level interface for performance reasons, basically?
<aeth>
jmercouris: imagine if GCC had a workaround for Firefox that detected it was compiling Firefox and did specific things just for Firefox
<|3b|>
that is the OS level API
<jmercouris>
aeth: stop, you're going to give me nightmares
<|3b|>
effectivvely
<aeth>
and then Clang would also do the same thing, and might have different performance characteristics...
<aeth>
I wouldn't be surprised if it went as far as some things having different big-O characteristics
<jmercouris>
this is possibly the worst thing I have ever heard about the state of hardware/software today
<aeth>
jmercouris: Remember, OpenGL is running a compiler, for GLSL. It's also probably doing some workarounds at the API level, too, probably.
<jmercouris>
s/today/in the relatively recent era
<ggole>
Some compilers used to have detection hacks like that, tuned for SPEC
<aeth>
And DirectX is probably similar.
<pjb>
That kind of things is half the bloat of MS-Windows.
<|3b|>
letting vendors control drivers at an abstract level like GL/vulkani does have the benefit that they can make huge changes to the underlying hardware over time, without worrying about running old binaries like xx86 does
<ggole>
But that was fiddling benchmarks rather than trying to kludge up some workaround
refpga has quit [Read error: Connection reset by peer]
<jmercouris>
so graphics cards these days effectively run micro code as well?
<pjb>
(it was also part of the old macOS).
refpga has joined #lisp
<jmercouris>
its turtles all the way down!
<|3b|>
well, they run arbitrary code, so hard to say if it is "microcode" or just "code running on GPU" for any given bit of code :p
<|3b|>
probably something comparable to "microcode" though, just for flexibility, late bug fixes, etc
<pjb>
hey! cuda has the cuda compiler in the GPU!
<ggole>
Yeah, fixed function hardware is long in the past at this point.
<jmercouris>
I am literally in awe
<jmercouris>
I wish we could just have a do-over with all of the knowledge we have, and make something better
<jmercouris>
at least ARM exists
<|3b|>
at least we get halfway decent drivers, with updates, etc unlike most arm boards :p
<aeth>
jmercouris: Well, it's kind of informative as to the level of complexity here that we have open source CPUs at this point (and multiple architectural options, including POWER and RISC V), but no open source GPU. And Nvidia doesn't even have open source drivers for its current generation afaik.
<|3b|>
"here's a binary blob of 6 year old opengl es with lots of known bugs, that only works with some specific patched version of linux 3.15"
iovec has joined #lisp
<jmercouris>
aeth: as in GPUs are very complex?
<jmercouris>
I think it also has to do probably with age, GPUs as a concept are muh newer than CPUs
<jmercouris>
s/muh/much
<|3b|>
shka__: heh, checked and osx apparently supports gl 4.1 at best, which was released july 2010, so not just 'circa' 2010 gl:/
<pjb>
I would note that Tesla developped it's own "GPU" to implement its self-driving car AI…
sjl_ has joined #lisp
zulu-inuoe has joined #lisp
actuallybatman has joined #lisp
cosimone has quit [Ping timeout: 252 seconds]
cosimone has joined #lisp
<jackdaniel>
general processing unit ,)
<jackdaniel>
lpu – lisp processing unit
<jackdaniel>
pcr – parenthesis counting registry
<Bike>
if you pass encode-universal-time a year between 0 and 99, it gets an actual year by adding that to the current year mod 100, and then subtracting 100 if the result is more than fifty years in the future
<Bike>
so at the moment 68 is 2068 and 69 is 1969
<Bike>
this seems overcomplicated.
<dlowe>
two digit years are a sin and they aren't even fun
<zulu-inuoe>
I agree they're a sin, but they're definitely fun. Oh. Wait you meant working with them
<Kabriel>
sjl_: what is gross? The "obvious" year when it's an integer between 0 and 99?
<sjl_>
yes
<pjb>
Kabriel: it's not obvious. Obvious years are [1900,2100].
<pjb>
Kabriel: or even [1500,2100]. But not [0,99].
Josh_2 has joined #lisp
<Kabriel>
we are totally screwed in the year 9999.
<Kabriel>
I get it, just wondering if that is what sjl_ found gross.
<Kabriel>
disregard my 9999 comment; just noticed it is a normal integer, so everything is fine.
<sjl_>
doesn't really bother me too much though, since you can't process times before 1900 anyway, so really the answer is usually "just use local-time"
<pjb>
sjl_: notice that time is strongly dependent on place, even more so before 1900.
<pjb>
aeth: the only problem is that it's not precise.
<sjl_>
pjb: yes, that is one of the main points of naggum's time article, which was the inspiration for local-time
<aeth>
The HE system is the year numbering system that uses the programmer's solution... just add a "1" in front of the current year. Now almost all meaningful-to-human dates are positive!
<pjb>
aeth: we have at last _some_ historical and astrological written data to be able to fix the origin of the gregorian calendar.
<aeth>
Anything more precise will make a mess of compatibility with the current system.
<aeth>
Something like adding a "1" in front is the only change we can actually go with.
<pjb>
Over long periods, you would have to take into account relativistic time flow anyways.
<Bike>
"1993 (11993 HE)" thanks
<pjb>
and that depends on the clock time vs. run-time (real-time vs. cpu-time).
<pjb>
We all know that the universe computer program has been running only for 5779 years.
<pjb>
so 11993 HE is meaningless.
<pjb>
If timetravel is possible you couldn't go back more than 5779 years.
<aeth>
pjb: If the universe is a simulation, it started running on 1970-01-01 and everything before that point is fiction.
<pjb>
or 1964-03-15 AFAIAC.
<aeth>
And, unfortunately, the world ends in 2038.
donotturnoff has quit [Remote host closed the connection]
iovec has quit [Quit: Connection closed for inactivity]
cosimone has joined #lisp
nowhere_man has quit [Ping timeout: 258 seconds]
shka_ has quit [Ping timeout: 248 seconds]
dyelar has quit [Quit: Leaving.]
nanoz has quit [Ping timeout: 248 seconds]
scymtym has quit [Ping timeout: 248 seconds]
Necktwi has quit [Ping timeout: 268 seconds]
Necktwi has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
vlatkoB has quit [Remote host closed the connection]
Lycurgus has joined #lisp
semz has quit [Quit: Leaving]
semz has joined #lisp
actuallybatman has quit [Ping timeout: 272 seconds]
manualcrank has joined #lisp
wigust has joined #lisp
xkapastel has joined #lisp
chipolux has quit [Ping timeout: 246 seconds]
chipolux has joined #lisp
dacoda has quit [Ping timeout: 252 seconds]
ebrasca has joined #lisp
actuallybatman has joined #lisp
_death has quit [Quit: ZNC 1.6.5+deb1+deb9u1 - http://znc.in]
skidd0 has joined #lisp
amerlyq has quit [Quit: amerlyq]
mbrumlow has quit [Ping timeout: 268 seconds]
mbrumlow has joined #lisp
zhlyg has quit [Ping timeout: 272 seconds]
nowhere_man has joined #lisp
asarch has joined #lisp
Bike has quit []
skidd0 has quit [Quit: WeeChat 2.4]
LiamH has quit [Quit: Leaving.]
shifty has quit [Ping timeout: 272 seconds]
leb has joined #lisp
nowhere_man has quit [Ping timeout: 257 seconds]
sjl_ has quit [Quit: WeeChat 2.3-dev]
cosimone has quit [Quit: WeeChat 2.4]
myrkraverk has quit [Read error: Connection reset by peer]
myrkraverk has joined #lisp
vms14 has joined #lisp
ricekrispie2 has quit [Quit: YEET]
<asarch>
One very stupid question: I can do: (net.html.generator:html (:html (:head (:title "My first page")) (:body (:h1 "Hello, world!")))) and I get: <html><head><title>My first page</title></head><body><h1>Hello, world!</h1></body></html>
<asarch>
However, if I do: (defun wrapper (body) (net.html.generator:html (:html (:head (:title "Mi first page")) (:body body)))) and then (wrapper "Hello, world!") I only get: <html><head><title>Mi first page</title></head><body></body></html>