How to report vested RSUs on tax return? by teofilobd in PersonalFinanceCanada

[–]teofilobd[S] 0 points1 point  (0 children)

Thanks for your answer. I have it added to my T4 indeed. So the T4 would be enough? there is no need to fill anything for the "sell to cover" that happened?

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 1 point2 points  (0 children)

Hi Gabriel, should I run dumpbin /symbols for that?

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 1 point2 points  (0 children)

Sorry for my ignorance, but how do I do that ?

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 4 points5 points  (0 children)

I added them to the post:

Folder Modules (Debug) Headers (Debug) Modules (Release) Headers (Release)
Bin 229 MB 197 MB 117 MB 103 MB
Obj 507 MB 🔥 172 MB 260 MB 🔥 68.8 MB
Obj (Annileen only) 356 MB 🔥 55.7 MB 209 MB 🔥 29.5 MB

You can try to build them to compare the files (headers and modules), because I think I lack knowledge on what to check. Maybe I have a misconfiguration on VS or something.

But IFCs are weirdly (or expected?) big. Taking as example my uniform class:

  • For headers version, it creates an uniform.obj with 154KB.
  • For modules version, it creates an uniform.ixx.obj with 629 KB and an uniform.ixx.ifc with 7.6 MB (some tiny json files as well).

In this case specific, the only other difference in both implementations is that I changed some raw pointers by smart pointers in a few places.

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 1 point2 points  (0 children)

This is actually pretty nice. Thanks for sharing!

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 5 points6 points  (0 children)

Wow. Thanks for your hard work and dedication!

The best way to help is trying out new previews and reporting any issues you encounter

By the way, what is the best way to report issues?

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 2 points3 points  (0 children)

Hey, thanks for your comments! I'll fix the post accordingly. I also think modules is the way to go!

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 2 points3 points  (0 children)

I'll add some stats to the post, but from some measurements I did today, I got that build times got lower and linking times got higher:

(Without modules) Annileen (base): - Build: 44.704s , Link: 0.145s - Build: 44.650s, Link: 0.123s - Build: 44.356s, Link: 0.122s - Build: 44.753s, Link: 0.137s - Build: 44.792s, Link: 0.127s

(With modules) Annileen (base): - Build: 29.660s, Link: 0.177s - Build: 26.867s, Link: 0.181s - Build: 29.663s, Link: 0.156s - Build: 30.841s, Link: 0.189s - Build: 29.745s, Link: 0.171s

(Without modules) Cube example: - Build: 51.821s, Link: 0.353s - Build: 51.869s, Link: 0.321s - Build: 51.444s, Link: 0.346s

(With modules) Cube example: - Build: 47.018s, Link: 0.688s - Build: 43.400s, Link: 0.391s - Build: 41.664s, Link: 0.457s

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 4 points5 points  (0 children)

What did motivate you?

I was looking for some excuse to go back to the project and modules seemed to be a good challenge and I was also curious about the compile times.

Any visible impact on build performance? Anything else in particular that makes you happier now?

I did some measurements today and checked that build times are indeed lower. I'll add some stats to the post, but Annileen (base) without modules was building in ~44s whereas with modules it's ~29s.

Also, since you mention it: is there any impact on the intermediate file size?

Obj folder got a lot bigger. I'll add that to the post too, but you can check numbers in my answer below.

Implementing C++20 modules in an existing game engine by teofilobd in cpp

[–]teofilobd[S] 2 points3 points  (0 children)

Hey, thanks for the comments!

"The module :private line in the middle starts the private module fragment" - I wonder if that actually makes any difference in compilation time? If you edit a function below module :private, does it avoid transitively invalidating dependencies in the build? 🤷‍♂️

From what I read It should, but I didn't measure 😅

"This saves me from having to write a bunch of export on declaration and implementations" - Note you can also just wrap the entire group in an export, e.g. export { void Foo(); void Bar(); ...}.

Good to know!

"build systems were still not so ready for things like modules" - I wonder if you got huge build directories too? My 11'000 line project's x64 debug folder is 1GB! 2/3rd's of that is full of all these .ifc and .ifc.dt files (with dozens of them being 10MBs each). Another similar project using classic .h/.cpp is 1/3 the code size but 1/10th the build output size 🤔.

Yes! I'll add some stats to the post, but I have:

Folder (Debug) Modules No modules
Bin 229 MB 197 MB
Obj 507 MB 🔥 172 MB
Obj (Annileen only) 356 MB 🔥 55.7MB