pocmatos
2018-3-20 08:02:08

@samth on yesterdays discussion of dynamic require… it takes the 20secs:


pocmatos
2018-3-20 08:02:22

Timing - Dynamically requiring arch-info: real: 19356 ms, process: 19286 ms, gc: 4182 ms


pocmatos
2018-3-20 08:02:29

Then you suggested raco make so:


pocmatos
2018-3-20 08:02:35

raco make archs/riscv/arch-info.rkt


pocmatos
2018-3-20 08:02:37

and…


pocmatos
2018-3-20 08:02:45

Timing - Dynamically requiring arch-info: real: 99 ms, process: 98 ms, gc: 24 ms


pocmatos
2018-3-20 08:02:51

errr… :slightly_smiling_face: Thanks.


abmclin
2018-3-20 11:41:51

Is there a reason why dynamic-require doesn’t automatically compile the module? From the above conversation it seemed to me that was the case.


githree
2018-3-20 12:33:10

woah! from 20 sec down to 0.1 sec that’s a huge difference


happycow
2018-3-20 12:50:21

@happycow has joined the channel


pocmatos
2018-3-20 13:13:44

@abmclin not sure. i actually hoped racket to be compiling a module before running, but that doesn’t seem to be the case. It seems an explicit raco make is necessary before hand.


abmclin
2018-3-20 13:14:29

Indeed, I was surprised to see that from your observations


abmclin
2018-3-20 13:15:19

@pocmatos I also noticed that your issues were arising from your ongoing efforts in porting Chez Scheme to RISCV, how’s that going?


pocmatos
2018-3-20 13:19:15

Partly but not only…. I have two projects going on with regards to riscv. The one with regards to the port is going slow as I have very little knowledge of chez so I am just poking around and getting the general architectural files setup. However, I should get my linux riscv board next month or so and hope by then to be able to do native testing.


pocmatos
2018-3-20 13:20:13

By that I meant that I am making slow progress but enough to be able to do some native testing in 4–6 weeks… fingers crossed


pocmatos
2018-3-20 13:20:54

However, I am not really interested in Chez, the whole point is really to have Racket 7 running on the riscv once it’s released.


abmclin
2018-3-20 13:21:09

very nice! I’m psyched to hear that. my working knowledge of RISC-V is only from reading the manuals so it’ll be cool to see it in action


abmclin
2018-3-20 13:22:15

right that makes sense, Chez Scheme is just the means to an end, I’ve tried studying its source code, but like you, have found it to be a challenge. Made some progress in understanding how its incremental compilation technology works but the lack of documentation other than postings to the user mailing list is really putting a damper on it


pocmatos
2018-3-20 13:22:56

That’s right, lack of docs is my issue as well so I just focusing on what is needed for a new arch.


abmclin
2018-3-20 13:22:58

If I’m recalling correctly RISC-V is broken down into the base integer instruction set and several standard extensions for multiplication, floating point operations, etc, have you already made a determination of which extensions in addition to the base would be needed to get Racket7 working?


pocmatos
2018-3-20 13:28:34

that’s correct


pocmatos
2018-3-20 13:28:42

the 64bit base is rv64i


pocmatos
2018-3-20 13:29:47

for the port i am targetting rv64imafd


pocmatos
2018-3-20 13:30:01

which includes multiplication, atomic instructions, floating point and double.


abmclin
2018-3-20 13:30:23

makes sense


abmclin
2018-3-20 13:31:27

are you currently maintaining a public repository with your work to date? Would love to see the code if you have it available


abmclin
2018-3-20 13:32:31

I’m also wondering if the J extension would be helpful, but guess that’s for future experimenting


abmclin
2018-3-20 13:32:47

since it doesn’t seem to be yet implemented


pocmatos
2018-3-20 13:33:08

my idea was to get something working before I push the changes, which are currently in a company internal branch. I can make them public if you want to see the progress.


abmclin
2018-3-20 13:33:20

sure, only if it’s not too inconvenient for you


pocmatos
2018-3-20 13:33:29

abmclin
2018-3-20 13:33:35

ok!


pocmatos
2018-3-20 13:34:06

I will tag what I have an push to a branch, probably wip-riscv.


abmclin
2018-3-20 13:34:24

ok cool, am looking forward to it


pocmatos
2018-3-20 13:35:07

yes, the J extension might be interesting but the working group was just created so it might take a while to get something stable for the port. Certainly nothing will come out of it before the racket7 release. However, I will be in the RISCV workshop in may and have more info.


abmclin
2018-3-20 13:36:05

ok, I’ll be also looking for the workshop’s published materials whenever they come out


abmclin
2018-3-20 13:36:47

I assume your RISCV board is HiFive?


pocmatos
2018-3-20 13:37:53

yes, i got a free pass on a hifive unleashed ’cause i run the gcc buildbot, so I got it for gcc riscv continuous integration purposes.


abmclin
2018-3-20 13:38:23

advantages of being in the right places with right contacts :wink:


pocmatos
2018-3-20 13:38:31

true.


abmclin
2018-3-20 13:38:51

well thank you for sharing information about your RISCV progress, appreciate it


pocmatos
2018-3-20 13:40:44

no worries, I will try to get it pushed later after work. Will let you know.


pocmatos
2018-3-20 13:41:28

Want to clean up a few nasty comments beforehand. :slightly_smiling_face:


greg
2018-3-20 16:29:23

> i actually hoped racket to be compiling a module before running, but that doesn’t seem to be the case. It seems an explicit raco make is necessary before hand.

Someone will surely correct me but IIUC the steps are ~= 1. read 2. expand 3. emit bytecode 4. JIT compile to native code

Generally the slowest step by far can be 2 (esp with many transitive requires and/or non-trivial macro expansion e.g. Typed Racket) raco make caches through step 3, in a .zo file

However in many of my projects 1–3 is negligible and I don’t even bother with raco make (either directly or indirectly as called by raco setup). But in some projects it’s significant.


gknauth
2018-3-20 17:38:11

I’m at NE Scala 2018, but the reason people talk to me is my Racket stickers.


oeplse
2018-3-20 17:45:19

@oeplse has joined the channel


stamourv
2018-3-20 18:53:33

Hurray! :D


samth
2018-3-20 18:54:48

@greg @pocmatos Greg is correct in general. Racket does compile before running, but does not update .zo files automatically unless you tell it to


pocmatos
2018-3-20 19:09:13

@samth shame. So, if you never run raco make, no zos are ever created?


samth
2018-3-20 19:09:28

@pocmatos raco setup also generates zo files


samth
2018-3-20 19:10:41

pocmatos
2018-3-20 19:10:54

Ah… Makes sense. And then they are only updated with raco make, fair enough.


pocmatos
2018-3-20 19:11:01

Will take a look at it…


jerome.martin.dev
2018-3-20 19:54:53

Hum, I’m stumbling with something here. How can I unsplice a (~seq) head-pattern into the resulting syntax? If I just use the syntax-class like #'(struct maybe-super), it renders as (struct (one two)) and I’d like (struct one two).


jerome.martin.dev
2018-3-20 19:56:36

Formulating web searches with terms like ‘unsplice’ and ‘splicing-syntax-class’ does not help x)


ryanc
2018-3-20 20:30:34

@jerome.martin.dev at the moment, you need to (require syntax/parse/experimental/template) and then you can write this: (template (struct (?@ . maybe-super))). I hope to merge that feature into the main implementation of syntax (#') soon.


jerome.martin.dev
2018-3-20 20:35:18

So I’m not crazy, it’s not possible yet \o/


jerome.martin.dev
2018-3-20 21:20:03

I tried #,@maybe-super but it doesn’t work because maybe-super is already a pattern variable.


ryanc
2018-3-20 21:27:20

try #,@ #'maybe-super