freenode/#clasp - IRC Chatlog
Search
17:34:46
Bike
the existing bignum methods on as_uintptr_t and stuff are wrong, since they just call get_si, which doesn't report an error if the bignum is out of range
17:35:32
Bike
who knows what that is. maybe there's some c++ template thing for type conversions that don't lose information
17:36:32
drmeister
No - we lose information all over the place in those conversions. I wasn't very careful. I took the C "undefined behavior" approach.
17:36:50
drmeister
Life is a whole lot easier if you don't give a sh*t and push the problem onto the programmer.
17:40:06
Bike
but there's still, let's see, 20 translator methods in bignum i haven't implemented for new bignums
18:16:38
Bike
i suppose with sizeof i should even be able to handle the case of a c++ integral type being bigger than an mp_limb_t
18:32:49
Bike
"C++ expressly forbids virtual template functions because the virtual tables that would have to be built are way too complex. Luckily, C++ offers a way around this. It's a programming paradigm called Policy Based Design." can't we just chuck it and make a fortran based lisp instead
19:34:19
Bike
the particular problem i don't understand here is "error: member 'clasp_to_integral' declared as a template" and "error: expected ';' at end of declaration list"
19:34:29
Bike
where clasp_to_integral is supposed to be a template function that's a member of the core namespace
19:35:06
Bike
seems like i also can't use TYPE_ERROR in bignum.h because the types haven't been defined or something
19:36:59
Bike
and i have to put it there in the first place because referring to a member template function of an incomplete type is too hard for C++ to figure out
19:40:24
Bike
it's probably parsing something some way i don't expect it to and that's wrecking everything
19:45:59
Bike
the idea is that code elsewhere calls clasp_to_integral, and clasp_to_integral calls the bignum class member functions if given a bignum.
19:59:44
drmeister
Why does it say "member 'clasp_to_integral' declared as a template" when clasp_to_integral is outside of the class definition?
20:00:37
drmeister
I'd start commenting stuff out and try to put a function definition in there. Something weird is going on.
20:02:04
drmeister
See if your curly brackes are all matching the way you expect. It might be out of whack
20:04:12
Bike
i don't even understand what "error: member 'clasp_to_integral' declared as a template" means
20:32:11
Bike
drmeister, if ever in the future you think to yourself that a function that already exists should have another name - like how we have "clasp_to_int16" and "clasp_to_int16_t" and so on - please PLEASE do not.
21:05:02
dra
drmeister: I'd like to get into hacking Clasp. Can you point me to where to get started?
21:06:38
Bike
is there some way we can just make create a template function? or generic? We have like six identical definitions for it
21:09:01
drmeister
And if you want to create an integer from an int8_t or a uint32_t - what do you do then?
21:10:16
Bike
i guess there's a problem if it's passed an unsigned value that's interpreted as signed
21:12:40
Bike
yes, and i would dealy like to do the same, but we have clasp_to_long calls in weird places that i don't feel like breaking right now.
21:19:01
Bike
it even lists the mpz_class one as an argument. that can't be right. is there an implicit conversion from long to mpz_class? i guess there must be
21:59:39
drmeister
Yeah - I've seen problems with a particular specialized version of create working on macOS and breaking the compiler on linux or vice versa
22:21:05
Bike
it looks like there's only one place ltvc_write_object is called with an immediate, so i can put a trap there
0:09:34
Bike
i think what's happening is - first create_tagged_immediate_value_or_nil gets a negative fixnum, which it returns, shifted. then that "immediate" is passed to ltvc_write_object. ltvc_write_object can only write size_t so it tries casting that negative value to a size_t
0:09:49
Bike
which, with the new bignum code, it rejects as out of range, if the "immediate" is a bignum
0:11:41
drmeister
yitzi added the ability to interrupt jupyterlab kernels and restart them. This works with the fork-server.
0:12:05
drmeister
So now the 30 seconds startup time for cando is done once when you startup the docker image.