[video member=pervognsen stream_platform=twitch project=bitwise title="Types Revisited" vod_platform=youtube id=Dq2gKTdL1uI annotator=Miblo] [0:09][Recap and set the stage for the day, with a few words on homework assigning][:speech] [2:34][Review the off-stream work on #line directive generation in terms of forward-declarations, and general cleanliness][:"code generation" :research] [8:07][Review the fix in the C :"code generation" of Ion's implicitly sized arrays][:language :research] [10:08][Review the introduction of Ion's switch case comma-notation][:"code generation" :language :research] [10:51][Review Ion's compound initialising with casting][:"code generation" :language :research] [13:24][Demo breaking into and stepping through Ion code and :asm, with a note on the utility of our use of the #line directive thanks to Ion's similarity to C][:language :run] [18:48][Demo :profiling Ion code][:run] [22:07][Q&A][:speech] [22:52][@synchronizerman][Then what does \[#line\] actually do?] [26:08][@captainkraft][@pervognsen I know that Nim has issues with debugging tools. They also compile down to C. Any idea why they can't take advantage of current tools like Ion does?][:language] [29:04][Set up to fill in the rest of the type system][:"code generation" :language :parsing :speech] [31:44][Point out where to find the C11 standard[ref author=ANSI title="ISO/IEC 9899:201x: Information technology – Programming languages – C" url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf]][:language :research] [32:53][A few words on learning C via DikuMUD[ref site=GitHub page="sneezymud / dikumud" url=https://github.com/sneezymud/dikumud] and K&R[ref author="Brian Kernighan and Dennis Ritchie" title="The C Programming Language, 2nd Edition" url=https://archive.org/details/CProgrammingLanguage2ndEditionByBrianW.KernighanDennisM.Ritchie]][:language :speech] [35:28][Integer promotions[ref author=ANSI title="ISO/IEC 9899: Information technology – Programming languages – C" url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf]][:language :speech] [1:00:42][Usual arithmetic conversions[ref author=ANSI title="ISO/IEC 9899: Information technology – Programming languages – C" url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf]][:language :speech] [1:11:38][Seek advice on triggering the final operand promotion case under 6.3.1.8 Usual arithmetic conversions[ref author=ANSI title="ISO/IEC 9899: Information technology – Programming languages – C" url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf]][:language :speech] [1:13:01][Augment our TypeKind struct with all, except long double, of C's builtin types][:language :parsing] [1:16:38][Introduce promote_operand(), Val union and operand_const(), and enable the resolver to handle our new type representation][:language :parsing] [1:26:57][@thebuzzsaw][Is there a public repo for what he's working on?[ref site=GitHub page="pervognsen / bitwise" url=https://github.com/pervognsen/bitwise]] [1:27:12][Continue to enable the resolver to handle our new type representation, and to perform operand promotion][:language :parsing] [1:38:31][:Run it and hit an assert somewhere][:language :parsing] [1:39:02][Make resolve_typespec call fatal_error() emitting the line position in the TYPESPEC_ARRAY case][:"error handling"] [1:39:45][:Run it to see that the assert fires on line 1][:language :parsing] [1:39:59][Temporarily change sizeof to use type int][:language] [1:40:13][:Run it to find that it actually works][:language :parsing] [1:40:30][Q&A][:speech] [1:40:48][@ws_ubi][I would like to understand why from :language syntax design not everything is like LISP and then you write macros on top of the language if you want to create a "nicer syntax" but the core is simpler, no?[ref author="John McCarthy" title="Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I" url=http://www-formal.stanford.edu/jmc/recursive.pdf][ref site=Wikipedia page="Dylan (programming language)" url=https://en.wikipedia.org/wiki/Dylan_(programming_language)]] [1:44:30][@sergej_reich][@pervognsen At least on 64-bit Linux: sizeof(long) == 8. I think that's true for most other Unix-like systems] [1:45:54][@dahlajn][Is the plan to port over the compiler itself to Ion once it can bootstrap itself?][:"code generation" :language] [1:47:17][@jprzemieniecki][@pervognsen What is the reason to have the long type in Ion anyway?][:language] [1:48:56][Stop recording][:speech] [/video]