|
00:40
Ven joined
02:25
Ven joined
02:49
ilbot3 joined
03:32
zakharyas joined
03:57
Ven joined
04:41
Ven joined
05:25
Ven joined
08:26
Ven joined
08:42
Ven joined
|
|||
| samcv | jnthn, i think we need an indexic some way to index a string case insensitively | 09:18 | |
| not totally sure how it does it now but i'm pretty sure it uses index with uc and lc things? not 100% sure | |||
|
09:27
Ven joined
09:42
Ven joined
10:41
IRCFrEAK joined
10:45
IRCFrEAK joined
11:02
Ven joined
11:10
domidumont joined
|
|||
| jnthn | samcv: Not sure off hand either, but sounds like something we'd reasonably want, yeah | 11:18 | |
| samcv | yeah | ||
| jnthn | Particularly if we implement optimized /:i foo/ where we just scan for foo | ||
| samcv | was suprised it didn't exist | ||
| and it seems to search really oddly now or something | |||
| github.com/perl6/nqp/blob/master/s...#L252-L258 like this, and then uh. not sure what happens after this | 11:19 | ||
| but am i right it's having uppercase and lowercase alternates | |||
| and does it run index for all alternates? how do we even implement character clases? | |||
|
11:20
domidumont joined
11:22
Ven joined
|
|||
| jnthn | Declarative regex constructs are both compiled into VM ops and have an NFA produced which is evaluated by MVM_nfa_run or some such | 11:25 | |
| The NFA being used for LTM purposes | |||
| samcv | LTM? | 11:26 | |
| jnthn | And yeah, the code you linked is presuming that for x..y, lc(x)..lc(y) and uc(x)..uc(y) will be sensible ranges | ||
| Longest Token Matching | |||
| samcv | oh yes | ||
| yeah. i thought that looked uh. kind of ugly | |||
| and they could be totally off | |||
| and include loads of unwanted characters | 11:27 | ||
| jnthn | Perhaps, do you have a concrete case where they are? :) | ||
| I can totally believe they exist, just didn't see one | |||
| samcv | yeah | ||
| jnthn | Oh, also | ||
| The thing you're looking at is the NFA compiler | |||
| Not the regex compiler | |||
| So this is the part making the NFA | |||
| samcv | m: say abs('a'.uc - 'a'.lc) | 11:28 | |
| camelia | Cannot convert string to number: base-10 number must begin with valid digits or '.' in 'āA' (indicated by ā) in block <unit> at <tmp> line 1 Actually thrown at: in block <unit> at <tmp> line 1 |
||
| samcv | m: say abs('a'.uc.ord - 'a'.lc.ord) | ||
| camelia | 32 | ||
| samcv | yeah i get that part jnthn | ||
| jnthn | But char classes turn into various node types depending what is in them | 11:29 | |
| So <[abc]> becomes iirc an enumcharlist | |||
| samcv | kk | ||
| jnthn | While <[a..z]> becomes a charrange | ||
| And <[a..z-_]> would iirc become an alt on a charrange and an enumcharlist | |||
| *of a | 11:30 | ||
| --target=ast will reveal all | |||
| But yeah, for :i <[a..z]> then it's producing the equivalent of <[a..z]> | <[A..Z]> | 11:31 | ||
| Which is obviusly correct for this case :) | |||
| But foo..bar where lc(foo)..lc(bar) and uc(foo)..uc(bar) don't make sense would be an issue | |||
| (We don't end up with a..A) | 11:32 | ||
| (or z..A) | |||
| samcv | yeah gotta see if there's any cases where it could screw things up | ||
| m: 'a'.ord.uc.say | 11:34 | ||
| camelia | 97 | ||
| samcv | that. is wrong | ||
| m: 'a'.ord.uc.WHAT.say | |||
| camelia | (Str) | ||
| samcv | hmm oh i guess. i can see why that happens | ||
| cause Cool | |||
| jnthn | aye | 11:35 | |
| Though then the interesting question becomes what alternatives we have :) | 11:36 | ||
| samcv | jnthn, ok i'm finding loads that span at least 100 | ||
| jnthn, see #perl6dev | 11:37 | ||
| jnthn | I can't understand what you're checking there? | ||
| samcv | things with over 100 cp different between uppercase and lotwercase | 11:38 | |
| is this a problem? idk. maybe not a problem | |||
| i have not decided | |||
| jnthn | I don't know that's a problem per se | ||
| samcv | i mean is that what the programmer expects? maybe | 11:39 | |
| jnthn | I think the problem is more like, what happens if we have foo..bar and uc(foo)..uc(bar) or lc(foo)..lc(bar) don't form valid ranges | ||
| samcv | would be interested. cause they have to start with a lower cp right | ||
| jnthn | Or more practically, do their exist alphabets in Unicode where if I wrote the equivalent of A..Z, then uc(A)..uc(Z) and lc(A)..lc(Z) are something crazy | 11:40 | |
| samcv | ok there's a lot | 11:41 | |
| like 'µ' | |||
| jnthn | But yeah, the trouble I guess is that .. is defiend in terms of a codepoint range, when what in many cases people *mean* is "the lowercase letters of script X" | ||
| samcv | 200 codpoints | ||
| yeah that seems more useful | |||
|
11:42
Ven joined
|
|||
| jnthn | And I think we give them a way to write such things? | 11:42 | |
| I guess char ranges to specify alphabets kinda come from an over-simplified view of the world that worked in ASCII :) | 11:43 | ||
| samcv | heh | 11:44 | |
| jnthn | I do seriously wonder what, if anything, we can do about it, though. | 11:48 | |
| I mean, I don't know we can reasonably infer alphabets that people meant... | |||
| samcv | of course not | ||
| jnthn | And it's not clear there's a fc-based solution | ||
| Though maybe there is :) | |||
| samcv | possible | 11:49 | |
| jnthn | Though given fc can produce multiple codepoints that would also become very...interesting. | ||
| samcv | yeah | ||
| jnthn | Oh, this bring up that classic German sharp s in a case-insensitive regex, don't it... o.O | ||
| samcv | maybe best to just leave it as | ||
| jnthn | Maybe, though if there is an obviously right-in-more-cases answer that isn't nuts to implement/explain then I'm good with that also :) | 11:50 | |
| samcv | yea. there are more important things though. like case insensitive index or something | 11:51 | |
| also NFA and some of the grammar stuff is pretty complex. i wish i magically understood it all | 11:52 | ||
| jnthn | Yeah, that was one of the areas of Rakudo that took me longest to get into | 11:55 | |
| dogbert17 | m: say expmod(1, -1, 1) | 11:56 | |
| camelia | (timeout) | ||
| jnthn | Hm, thought that got fixed yesterday... | 11:57 | |
| dogbert17 | well it works locally | ||
| m: say 'Hi' | |||
| camelia | Hi | ||
| dogbert17 | locally I have 'This is Rakudo version 2017.02-232-g1e246665c built on MoarVM version 2017.02-38-g58457845' | 11:58 | |
| jnthn | Oh, maybe the bot got stuck 'cus of the recent submodule switcheroo | 11:59 | |
| samcv | yeah i think it did | ||
| i think people who don't have seperate dinrectiories for moarvm and nqp and rakudo are getting it | 12:00 | ||
| jnthn | I forget who runs camelia | ||
| dogbert17 | .botsnack | ||
| yoleaux2 | :D | ||
| synopsebot6 | om nom nom | ||
| dogbert17 | moritz? | 12:01 | |
| jnthn | Or maybe nine | ||
|
12:01
Ven joined
|
|||
| dogbert17 | does any of you have a recent perl on your local machines | 12:02 | |
| samcv | me | 12:03 | |
| dogbert17 | if so could you try this: 'say expmod(3, -1, 3)' | ||
| samcv | perl5? | ||
| dogbert17 | perl6 :) | ||
| samcv | ok | ||
| i have both | |||
| uh oh | |||
| it just. doesn't do anything | 12:04 | ||
| and hangs sorta | |||
| dogbert17 | yeah, it seems as if github.com/libtom/libtommath/issues/67 is inclomplete | ||
| samcv | what version are we using for moarvm? | 12:05 | |
| dogbert17 | 'expmod(1, -1, 1)' works | ||
| samcv | i have 1.0 installed on my computer and i think i'm using the local version | ||
| let me try with the moarvm provided libs | 12:07 | ||
| dogbert17 | cool | ||
| samcv | uhm still hanging | 12:08 | |
| dogbert17 | expmod(3, -1, 3) ? | 12:09 | |
| samcv | hold on i purged libtommath folder and then had it pull it in again just to double check | 12:10 | |
| yeah still hang | |||
| dogbert17 | expmod(1, -1, 1) should work though | 12:11 | |
| samcv | yeah that works | ||
| was it broken before? | |||
| dogbert17 | yes | ||
| MasterDuke | i get the same thing, works with 1, hangs with 3 | 12:13 | |
| dogbert17 | the libtommatch patch above only seem to fix the case when the last parameter to p6 expmod is 1 | ||
| dogbert17 wonders if it's time to look at some C code | 12:19 | ||
|
12:21
Ven joined
12:42
Ven joined
13:01
Ven joined
13:21
Ven joined
|
|||
| moritz | I'm cleaning out some stuff now and triggering a rebuild of rakudo-moar for camelia | 13:36 | |
| m: say 42 | 13:41 | ||
| camelia | 42 | ||
|
13:41
Ven joined
14:01
Ven joined
14:21
Ven joined
14:38
agentzh joined
14:41
Ven joined
15:01
Ven joined
15:21
Ven joined
|
|||
| dogbert17 | m: say expmod(1, -1, 1) | 15:30 | |
| camelia | 0 | ||
| dogbert17 | cool | 15:31 | |
| m: say expmod(42, -1, 7) | |||
| camelia | (timeout) | ||
|
15:41
Ven joined
|
|||
| timotimo | i'm wondering what i'd best change about the gdb plugin to make it less unbearably slow | 15:44 | |
| because ... god damn, it's so fucking slow | |||
| probably ought to profile it | 15:48 | ||
| and figure out the exact semantics of running C code from the target binary while the whole thing is stopped | 15:49 | ||
| maybe introduce a few helper functions in moar that do all their stuff on the stack rather than touching global program state like malloc would | |||
| dogbert17 | sounds cool | 15:50 | |
| timotimo | oh, if you're into that kind of stuff, you could do it instead of me :D :D | ||
| dogbert17 | ha :) trying to look into libtommath atm ... | 15:51 | |
| dogbert17 which might turn out to be a fiasco, we'll see | 15:52 | ||
| timotimo | oh, that's brave | ||
| well, at least all the big int algorithms are described in perhaps excruciating detail in many many papers from the early 80s | |||
| MasterDuke | some of you people better versed in C and signed vs unsigned number representations might have better luck than me with github.com/MoarVM/MoarVM/issues/513 | 15:53 | |
| dogbert17 | one way to fix our problem is to always use 'mp_invmod_slow'. The name however makes me suspect we'll suffer a performance loss by doing so | 15:54 | |
| timotimo | um | ||
| are you trying to fix the bug that's already fixed? | |||
| or is the fix i committed somehow not good enough? | 15:55 | ||
| dogbert17 | m: say expmod(42, -1, 7) | ||
| camelia | (timeout) | ||
| dogbert17 | it's good but there are some cases it does not catch | ||
| timotimo | oh | ||
| dogbert17 | seems to me that if the second param is negative, the third odd and at the same time evenly divisable with the first the call will habn | 15:57 | |
| s/habn/hang/ | |||
| so expmod(42, -1, 5) will work but expmod(42, -1, 7) or expmod(42, -1, 21) or expmod(42, -1, 3) will not | 15:59 | ||
| timotimo | now to have some fun trying to make gdb auto load my gdb-python-script ... | 16:01 | |
|
16:02
Ven joined
|
|||
| dogbert17 | m: say say 42 <</>> (3,5,7,21) | 16:02 | |
| camelia | (14 8.4 6 2) True |
||
| timotimo | ugh, i remember now why gdb's python support is so utterly atrocious | 16:04 | |
| it won't give you tracebacks or anything like that when you get an exception inside your script | 16:06 | ||
| set python print-stack | |||
| By default, GDB will print only the message component of a Python exception when an error occurs in a Python script. This can be controlled using set python print-stack: if full, then full Python stack printing is enabled; if none, then Python stack and message printing is disabled; if message, the default, only the message component of the error is printed. | |||
| jesus thank god holy fuck why is this not the default | |||
|
17:11
agentzh joined
18:02
agentzh joined
20:08
Ven joined
21:07
Ven joined
21:09
Ven joined
22:54
agentzh joined
|
|||