[, < / ], >Jump to previous / next episode W, K, P / S, J, NJump to previous / next marker t / TToggle theatre / SUPERtheatre mode VRevert filter to original stateYSelect link (requires manual Ctrl-c)
Menu toggling
qQuotesrReferencesfFilteryLinkcCredits
In-Menu Movement
a
w s
d
hjkl
←
↑ ↓
→
Quotes and References Menus
EnterJump to timecode
Quotes, References and Credits Menus
oOpen URL (in new tab)
Filter Menu
x, SpaceToggle category and focus next X, ShiftSpaceToggle category and focus previous vInvert topics / media as per focus
0:51Review the work performed on arithmetic conversions in unify_arithmetic_operands() from the last stream1
📖
0:51Review the work performed on arithmetic conversions in unify_arithmetic_operands() from the last stream1
📖
0:51Review the work performed on arithmetic conversions in unify_arithmetic_operands() from the last stream1
📖
6:27Describe the final operand promotion case under 6.3.1.8 Usual arithmetic conversions2 with an example
🗩
6:27Describe the final operand promotion case under 6.3.1.8 Usual arithmetic conversions2 with an example
🗩
6:27Describe the final operand promotion case under 6.3.1.8 Usual arithmetic conversions2 with an example
🗩
8:35Continue to review the work on const expression evaluation, the != operator and resolver error handling
📖
8:35Continue to review the work on const expression evaluation, the != operator and resolver error handling
📖
8:35Continue to review the work on const expression evaluation, the != operator and resolver error handling
📖
12:22Review the work converting between void pointers and any other pointer type, with some cool tips on C
📖
12:22Review the work converting between void pointers and any other pointer type, with some cool tips on C
📖
12:22Review the work converting between void pointers and any other pointer type, with some cool tips on C
📖
17:21Demo the new support for variadic functions
🏃
17:21Demo the new support for variadic functions
🏃
17:21Demo the new support for variadic functions
🏃
18:42Review the variadic function handling code in parse_type_func() and resolve_expr_call(), noting how these work in C3
📖
18:42Review the variadic function handling code in parse_type_func() and resolve_expr_call(), noting how these work in C3
📖
18:42Review the variadic function handling code in parse_type_func() and resolve_expr_call(), noting how these work in C3
📖
22:51Review the work supporting empty compound literals in f2()
📖
22:51Review the work supporting empty compound literals in f2()
📖
22:51Review the work supporting empty compound literals in f2()
📖
24:43Q&A
🗩
24:43Q&A
🗩
24:43Q&A
🗩
25:04irazorx0pervognsen You have a redundant "variadic = true" as your error is if(variadic)
🗪
25:04irazorx0pervognsen You have a redundant "variadic = true" as your error is if(variadic)
🗪
25:04irazorx0pervognsen You have a redundant "variadic = true" as your error is if(variadic)
🗪
25:26xanatos387pervognsen Will we have a bool type?
🗪
25:26xanatos387pervognsen Will we have a bool type?
🗪
25:26xanatos387pervognsen Will we have a bool type?
🗪
26:05pmttavara Not needing a temporary is amazing. I see a lot of sockets code writing things like "int zero = 0;" just so setsockopt() can take its address
🗪
26:05pmttavara Not needing a temporary is amazing. I see a lot of sockets code writing things like "int zero = 0;" just so setsockopt() can take its address
🗪
26:05pmttavara Not needing a temporary is amazing. I see a lot of sockets code writing things like "int zero = 0;" just so setsockopt() can take its address
🗪
26:28sci4me Why do you put void as a parameter?
🗪
26:28sci4me Why do you put void as a parameter?
🗪
26:28sci4me Why do you put void as a parameter?
🗪
26:49Determine to add support for annotating foreign function declarations
🗩
26:49Determine to add support for annotating foreign function declarations
🗩
26:49Determine to add support for annotating foreign function declarations
🗩
29:45Introduce a new "@" token, Note and NoteList structs and parse_note_list(), for parse_decl_opt() to call
29:45Introduce a new "@" token, Note and NoteList structs and parse_note_list(), for parse_decl_opt() to call
29:45Introduce a new "@" token, Note and NoteList structs and parse_note_list(), for parse_decl_opt() to call
34:50Test our @foreign function annotating, to see that it's not quite right
🏃
34:50Test our @foreign function annotating, to see that it's not quite right
🏃
34:50Test our @foreign function annotating, to see that it's not quite right
🏃
35:57Introduce note_list() and add a Pos pos to the Note struct
35:57Introduce note_list() and add a Pos pos to the Note struct
35:57Introduce note_list() and add a Pos pos to the Note struct
38:22Run it to see that it looks right
🏃
38:22Run it to see that it looks right
🏃
38:22Run it to see that it looks right
🏃
38:52Introduce get_decl_note() for gen_func_defs() to call
38:52Introduce get_decl_note() for gen_func_defs() to call
38:52Introduce get_decl_note() for gen_func_defs() to call
41:36Run it, with an explanation of how this works
🏃
41:36Run it, with an explanation of how this works
🏃
41:36Run it, with an explanation of how this works
🏃
42:17Annotate @foreign functions in test1.ion, and introduce is_decl_foreign() in ast.c
42:17Annotate @foreign functions in test1.ion, and introduce is_decl_foreign() in ast.c
42:17Annotate @foreign functions in test1.ion, and introduce is_decl_foreign() in ast.c
44:27Run it to see what this generates
🏃
44:27Run it to see what this generates
🏃
44:27Run it to see what this generates
🏃
45:53Introduce resolve_unary_op() to handle unary arithmetic operators, for resolve_expr_unary() to call4
45:53Introduce resolve_unary_op() to handle unary arithmetic operators, for resolve_expr_unary() to call4
45:53Introduce resolve_unary_op() to handle unary arithmetic operators, for resolve_expr_unary() to call4
50:51Introduce resolve_binary_arithmetic_op() to handle binary arithmetic operators, for resolve_expr_binary() to call5
50:51Introduce resolve_binary_arithmetic_op() to handle binary arithmetic operators, for resolve_expr_binary() to call5
50:51Introduce resolve_binary_arithmetic_op() to handle binary arithmetic operators, for resolve_expr_binary() to call5
59:05Enable resolve_expr_binary() to handle the bitwise shift operators6
59:05Enable resolve_expr_binary() to handle the bitwise shift operators6
59:05Enable resolve_expr_binary() to handle the bitwise shift operators6
1:07:27Enable resolve_expr_binary() to handle relational operators7
1:07:27Enable resolve_expr_binary() to handle relational operators7
1:07:27Enable resolve_expr_binary() to handle relational operators7
1:09:20nothings2pervognsen Because C99 supports complex
🗪
1:09:20nothings2pervognsen Because C99 supports complex
🗪
1:09:20nothings2pervognsen Because C99 supports complex
🗪
1:09:28Introduce resolve_binary_op(), and enable resolve_expr_binary() to handle relational operators8
1:09:28Introduce resolve_binary_op(), and enable resolve_expr_binary() to handle relational operators8
1:09:28Introduce resolve_binary_op(), and enable resolve_expr_binary() to handle relational operators8
1:14:34Enable resolve_expr_binary() to handle equality operators9
1:14:34Enable resolve_expr_binary() to handle equality operators9
1:14:34Enable resolve_expr_binary() to handle equality operators9
1:16:37Enable resolve_expr_binary() to handle bitwise AND, XOR and OR and logical AND and OR,10 introducing is_scalar_type()
1:16:37Enable resolve_expr_binary() to handle bitwise AND, XOR and OR and logical AND and OR,10 introducing is_scalar_type()
1:16:37Enable resolve_expr_binary() to handle bitwise AND, XOR and OR and logical AND and OR,10 introducing is_scalar_type()
1:23:53Enable resolve_expr_ternary() to handle the ternary conditional operators11
1:23:53Enable resolve_expr_ternary() to handle the ternary conditional operators11
1:23:53Enable resolve_expr_ternary() to handle the ternary conditional operators11
1:27:38Introduce resolve_stmt_assign() to begin the handling of assignment operators12
1:27:38Introduce resolve_stmt_assign() to begin the handling of assignment operators12
1:27:38Introduce resolve_stmt_assign() to begin the handling of assignment operators12
1:29:41Run it to test that we didn't break anything
🏃
1:29:41Run it to test that we didn't break anything
🏃
1:29:41Run it to test that we didn't break anything
🏃
1:30:05Introduce test_ops() in test1.ion to test resolve_expr_unary()
1:30:05Introduce test_ops() in test1.ion to test resolve_expr_unary()
1:30:05Introduce test_ops() in test1.ion to test resolve_expr_unary()
1:31:34Run it to see that it works
🏃
1:31:34Run it to see that it works
🏃
1:31:34Run it to see that it works
🏃
1:32:06Try to test a ~ assignment in test_ops()
1:32:06Try to test a ~ assignment in test_ops()
1:32:06Try to test a ~ assignment in test_ops()
1:32:46Add TOKEN_NEG to token_kind_names
1:32:46Add TOKEN_NEG to token_kind_names
1:32:46Add TOKEN_NEG to token_kind_names
1:33:20Run it to find that the ~ assignment works
🏃
1:33:20Run it to find that the ~ assignment works
🏃
1:33:20Run it to find that the ~ assignment works
🏃
1:33:30Add tests of binary operators in test_ops()
🏃
🖮
1:33:30Add tests of binary operators in test_ops()
🏃
🖮
1:33:30Add tests of binary operators in test_ops()
🏃
🖮
1:34:00Fix resolve_expr_binary to handle TOKEN_MOD separately from TOKEN_MUL and TOKEN_DIV
1:34:00Fix resolve_expr_binary to handle TOKEN_MOD separately from TOKEN_MUL and TOKEN_DIV
1:34:00Fix resolve_expr_binary to handle TOKEN_MOD separately from TOKEN_MUL and TOKEN_DIV
1:34:51Test that % operator, and further assignments in test_ops()
🏃
🖮
1:34:51Test that % operator, and further assignments in test_ops()
🏃
🖮
1:34:51Test that % operator, and further assignments in test_ops()
🏃
🖮
1:37:17Fix the handling of TOKEN_SUB in resolve_expr_binary()
1:37:17Fix the handling of TOKEN_SUB in resolve_expr_binary()
1:37:17Fix the handling of TOKEN_SUB in resolve_expr_binary()
1:37:53Run it to see that it works
🏃
1:37:53Run it to see that it works
🏃
1:37:53Run it to see that it works
🏃
1:38:05Test shifting and comparison in test_ops(), to see that it all works
🏃
🖮
1:38:05Test shifting and comparison in test_ops(), to see that it all works
🏃
🖮
1:38:05Test shifting and comparison in test_ops(), to see that it all works
🏃
🖮
1:40:18Roll the TOKEN_EQ and TOKEN_NOTEQ cases into the other comparison cases in resolve_expr_binary()
1:40:18Roll the TOKEN_EQ and TOKEN_NOTEQ cases into the other comparison cases in resolve_expr_binary()
1:40:18Roll the TOKEN_EQ and TOKEN_NOTEQ cases into the other comparison cases in resolve_expr_binary()
1:40:58Test bitwise and logical comparison stuff in test_ops()
🏃
🖮
1:40:58Test bitwise and logical comparison stuff in test_ops()
🏃
🖮
1:40:58Test bitwise and logical comparison stuff in test_ops()
🏃
🖮
1:42:56Q&A
🗩
1:42:56Q&A
🗩
1:42:56Q&A
🗩
1:44:49Recap the day's work, with a glimpse into the future handling pointer decay13
🗩
1:44:49Recap the day's work, with a glimpse into the future handling pointer decay13
🗩
1:44:49Recap the day's work, with a glimpse into the future handling pointer decay13