[video member=pervognsen stream_platform=twitch project=bitwise title="Weekend Edition" medium=research vod_platform=youtube id=jNbar0lj93g annotator=Miblo]
[0:08][Recap and set the stage for an especially random day][:speech]
[2:25][Review the work making the dot operator for field access auto-dereference pointers to aggregates, and implementing support for float const declarations][:"code generation" :parsing]
[6:10][Showcase the vector library test2.ion][:"code generation" :parsing]
[8:23][Review the work implementing support for bool][:"code generation" :parsing]
[9:58][Review the work implementing conservative control analysis in resolve_stmt() and resolve_stmt_block()][:parsing]
[14:34][Review the work implementing detection of duplicate global and local symbol errors][:"error handling"]
[15:56][Review the work implementing function call notation int(3.14) for explicit type conversion][:parsing]
[17:00][Review the work on explicitly sized types, and adding support for C-style null pointers][:"code generation"]
[19:12][Review the work allowing optional names in function typespecs][:parsing]
[20:18][Review the work implementing the const qualifier, with an explanation of the notion of non-modifiability in C][:"code generation" :language :parsing]
[31:53][Describe the conceptual breakthrough regarding the use of expressions in an rvalue context, with explanations of operand_decay(), convert_operand(), is_convertible() and is_null_ptr()][:"code generation" :parsing]
[36:53][Fix is_null_ptr() to use is_integer_type() rather than is_arithmetic_type() when determining whether to call cast_operand()][:"code generation" :parsing :programming]
[37:24][Continue to describe is_null_ptr() and is_convertible()][:"code generation" :parsing]
[38:32][Review the new distinction between casts and conversions][:"code generation" :parsing]
[41:29][Review the work implementing support for different literal types and literal suffixes][:"code generation" :parsing]
[47:20][Explain C's differing rankings of decimal and octal / hexadecimal integer constants[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]
[56:12][Review the new preservation of token modifiers for literals in generated C code][:"code generation" :language]
[1:01:24][Review the work implementing support for "x: int" and "x: int = 0" local initialiser statements][:"code generation" :parsing]
[1:05:20][Review the new inference of incomplete array size for initialiser statements, and :"error handling" of size 0 function parameters and assignment to arrays][:"code generation"]
[1:09:05][Make is_convertible() to treat arrays as pointers for the purposes of pointer-decay][:"code generation" :parsing :programming]
[1:12:57][:Run it to see what test_arrays() produces][:"code generation" :parsing]
[1:13:49][Revert is_convertible() and instead enable resolve_expr_call() to pointer-decay arrays][:"code generation" :parsing :programming]
[1:15:45][Reflect on the near completion of Ion, and determine to handle volatile][:speech]
[1:16:23][Q&A][:speech]
[1:16:51][@tbodt_][Since they're compile-time constants couldn't you compute the value of the constant in the compiler and just inline that?][:"code generation" :parsing]
[1:18:52][@pmttavara][For goto, don't you just have to verify that there is at least one return statement after the very final goto label in the function?][:"code generation" :parsing]
[1:19:20][@godling72][@pervognsen Are you going to have "restrict"?[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]
[1:20:37][@BitSlime][Doesn't restrict just make sure two pointer parameters aren't the same?[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]
[1:22:37][@olafbtwitch][Inline assembly?][:asm :language]
[1:23:29][@BitSlime][You need inline assembly since C has no native cpuid function][:asm :language]
[1:24:15][Determine to fully handle enums[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]][:"code generation" :language :parsing]
[1:29:57][Enable resolve_decl_type() and resolve_sym() to handle the SYM_ENUM_CONST case, introducing type_enum() and resolve_decl_enum() and an EnumField struct][:"code generation" :language :parsing :programming]
[1:48:47][Restate the problem with handling enums][:"code generation" :language :parsing :speech]
[1:49:49][Temporarily introduce sym_push_const() symbol stack][:"code generation" :language :parsing :programming]
[1:51:25][Revert the new enum handling code][:"code generation" :language :parsing :programming]
[1:52:34][Get lunch][:speech]
[/video]
