freenode/lisp - IRC Chatlog
Search
4:25:25
White_Flame
the one thing that I hate the most about GCs is that most require you to specify a heap size
4:30:03
adlaistevenson
I wonder how people deal with long (multi-minute) GC pauses in production. Do they force the GC at certain times and rotate through the servers, so other instances are guaranteed not to be GCing at same time?
4:31:38
White_Flame
most huge systems are combinations of databases and distributed application servers
4:38:46
aeth
The main thing I could think of that might test a GC in CL would be a game or simulation of sufficient size.
4:39:53
adlaistevenson
I wonder if Swift figured out a workaround to cycles being leaked by ref counting.
4:46:24
aeth
C++ is absolute overkill for modern computers. They use it because they're locked in by proprietary libraries (and engines) written in C++.
4:48:14
aeth
If you're making a PC-only game, though, there's no reason but using existing libraries/engines to use C++, though, afaik.
4:49:20
aeth
Game dev literature often jumps through huge hoops to make C++ do things that languages like CL can do out of the box, like "hotloading", i.e. recompiling something while the program is running so development is faster iirc.
4:50:16
aeth
But if you're writing a game engine in a language with poor interoperability with C++, congratulations, you're now writing a physics engine, too.
4:51:42
aeth
The scripting language gamedevs have almost entirely moved to Lua and JavaScript. Python is not good for gaming. It doesn't embed well (well, it's not sandboxed) and it has some of the worst performance of any programming language (except Pypy, which targets enterprises and has its own issues)
4:52:10
aeth
I think Lua with gamedev and JavaScript with gamedev are, relatively speaking, now much larger than Python for gamedev.
4:52:44
aeth
Python was once taken very seriously. E.g. some major MMO (Eve?) has its backend partially in Python. Civ 4 uses Python (Civ 5 uses Lua, I'm not sure what Civ 6 uses if anything). etc.
4:53:37
aeth
Absolutely speaking, Python gamedev is probably larger than Lisp gamedev because Python is huge, especially with beginners. In terms of % mindshare? It's probably gone way down in the last 10 years.
4:54:54
aeth
Games are probably the only niche in *anything* where Lua is more popular than Python as a scripting language.
9:37:36
Grue``
I need a simple thread pool library that actually works (requirements: 1: must be able to wait until all tasks in the pool are finished, 2: must not use sb-thread:interrupt-thread to send signals to threads)
9:39:58
shka
anyway, I would try lparallel as It is my personal default for everything concurrency related
9:41:16
Grue``
"`end-kernel’ should not be used as a substitute for properly waiting on tasks with `receive-result’ or otherwise." what's the correct way to finish all the tasks then?
9:43:17
p_l
make all tasks have an end (triggered or natural) that gives out a result for receive-result ?
14:50:47
xmonader
beach, I've checkmany macro that takes a test cases and a function called test-v1 that uses (and it works okay with loop for f in forms)
14:51:07
xmonader
problem is with test-v2+ version and checkmany macro 2 that trying to use dolist macro
14:51:50
beach
In the second case, you removed the comma as well as the LOOP, so now the second backquote is no longer inside a comma.
14:54:01
beach
xmonader: Also, the PROGN exists in the first case because the loop is going to generate a list of things at compile time, and those things must be wrapped in a PROGN since the macro only returns a single form.
14:54:35
beach
xmonader: In the second case, the DOLIST is not executed at compile time, so it is a single form, which means the PROGN is no longer required.
14:56:40
beach
xmonader: In the LOOP case, f is a form. In the expansion (as you can see when you macroexpand), report-result is called both with the value of the form and the form itself.
14:57:34
beach
xmonader: So if a form is [say] (= (+ 1 2) 3) then the call will look like this: (report-result (= (+ 1 2) 3) '(= (+ 1 2) 3))
15:01:24
beach
You will have something like (progn (dolist (f ((= (+ 1 2) 3) (= (+ 1 2 3) 6) ...)) ...))
15:07:51
beach
... and when you say (report-result ,f ',f), the comma before f makes f refer to something outside `(progn (dolist ...)) but there is no f outside.
15:08:27
beach
xmonader: He is doing the computation at compile time by preceding the LOOP with a comma.
15:08:57
beach
xmonader: You kind of removed the main point of the macro by not doing the DOLIST at compile time.
15:09:57
beach
xmonader: Now, if you can tell me what the purpose of this modification was, we might be able to patch it up.
15:10:33
xmonader
beach, not really a purpose it just came to my mind why not to use dolist instead :D
15:12:42
beach
I never use dolist myself, but you will have to precede it with ,@ just as with LOOP, and you will have to return a list of forms pretty much the same way the LOOP did.
15:17:14
beach
(defmacro checkmany2 (&body forms) (let ((result '())) `(progn ,@(dolist (f forms result) (push `(report-result ,f ',f) result)))))
16:12:35
flip214
Posterdati: This is not a file name, but a directory name. therefore probe-file does not work.
16:12:56
flip214
you could test for some specific file in there, or rely on other standard mechanisms...
16:21:53
Bike
puthash is not a standard function. sbcl defines an internal puthash that it uses to modify hash tables.
16:24:52
Bike
you can (defun puthash (key table value) (setf (gethash key table) value)) if you want. i don't know why you'd want to, though.