We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
Functions & Statements
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:07Recap and set the stage for the day, reviewing the code from the previous (extra) stream
🗩
0:07Recap and set the stage for the day, reviewing the code from the previous (extra) stream
🗩
0:07Recap and set the stage for the day, reviewing the code from the previous (extra) stream
🗩
1:16Review the work on resolve_expr_compound(), resolving components of compound literals, and on implementing support for named and index initialisers
📖
1:16Review the work on resolve_expr_compound(), resolving components of compound literals, and on implementing support for named and index initialisers
📖
1:16Review the work on resolve_expr_compound(), resolving components of compound literals, and on implementing support for named and index initialisers
📖
9:36Review the work on integer binary operators, including constant folding
📖
9:36Review the work on integer binary operators, including constant folding
📖
9:36Review the work on integer binary operators, including constant folding
📖
11:19Review the work on type alignment
📖
11:19Review the work on type alignment
📖
11:19Review the work on type alignment
📖
14:21Mention the hope to get to code generation, and determine to finish type-checking and inference for statements
🗩
14:21Mention the hope to get to code generation, and determine to finish type-checking and inference for statements
🗩
14:21Mention the hope to get to code generation, and determine to finish type-checking and inference for statements
🗩
15:18Perform some cleanup, renaming the Entity struct to Sym
15:18Perform some cleanup, renaming the Entity struct to Sym
15:18Perform some cleanup, renaming the Entity struct to Sym
17:52Enable sym_get() to perform a linear search over symbols in nested scopes
17:52Enable sym_get() to perform a linear search over symbols in nested scopes
17:52Enable sym_get() to perform a linear search over symbols in nested scopes
23:17Run it to see that the existing stuff still works
🏃
23:17Run it to see that the existing stuff still works
🏃
23:17Run it to see that the existing stuff still works
🏃
23:43Introduce sym_push(), sym_enter() and sym_leave(), to operate on symbols within scopes
23:43Introduce sym_push(), sym_enter() and sym_leave(), to operate on symbols within scopes
23:43Introduce sym_push(), sym_enter() and sym_leave(), to operate on symbols within scopes
27:38Introduce resolve_func(), sym_var(), resolve_stmt_block(), resolve_stmt() and resolve_cond_expr(), to parse function bodies
27:38Introduce resolve_func(), sym_var(), resolve_stmt_block(), resolve_stmt() and resolve_cond_expr(), to parse function bodies
27:38Introduce resolve_func(), sym_var(), resolve_stmt_block(), resolve_stmt() and resolve_cond_expr(), to parse function bodies
48:55Explain the logic behind our for-loop parsing
🗩
48:55Explain the logic behind our for-loop parsing
🗩
48:55Explain the logic behind our for-loop parsing
🗩
50:40Continue to work through our statement cases – switch, assign and init – in resolve_stmt()
50:40Continue to work through our statement cases – switch, assign and init – in resolve_stmt()
50:40Continue to work through our statement cases – switch, assign and init – in resolve_stmt()
1:02:28Run it to verify we don't crash
🏃
1:02:28Run it to verify we don't crash
🏃
1:02:28Run it to verify we don't crash
🏃
1:02:47Add a ++ test in resolve_test() and fix a crash bug in the STMT_ASSIGN case in resolve_stmt()
1:02:47Add a ++ test in resolve_test() and fix a crash bug in the STMT_ASSIGN case in resolve_stmt()
1:02:47Add a ++ test in resolve_test() and fix a crash bug in the STMT_ASSIGN case in resolve_stmt()
1:04:24Run it to see it doesn't crash
🏃
1:04:24Run it to see it doesn't crash
🏃
1:04:24Run it to see it doesn't crash
🏃
1:05:02Add further tests of our new code in resolve_test(), running to see how it works
🏃
🖮
1:05:02Add further tests of our new code in resolve_test(), running to see how it works
🏃
🖮
1:05:02Add further tests of our new code in resolve_test(), running to see how it works
🏃
🖮
1:07:38Hit a "Non-existent name" error
🏃
1:07:38Hit a "Non-existent name" error
🏃
1:07:38Hit a "Non-existent name" error
🏃
1:07:48Add a sym_install_type() for "float" in resolve_test()
1:07:48Add a sym_install_type() for "float" in resolve_test()
1:07:48Add a sym_install_type() for "float" in resolve_test()
1:07:59Run it and hit our expected "Return type mismatch" error
🏃
1:07:59Run it and hit our expected "Return type mismatch" error
🏃
1:07:59Run it and hit our expected "Return type mismatch" error
🏃
1:08:11Add further tests, of switch(), in resolve_test(), running to see how it works
🏃
🖮
1:08:11Add further tests, of switch(), in resolve_test(), running to see how it works
🏃
🖮
1:08:11Add further tests, of switch(), in resolve_test(), running to see how it works
🏃
🖮
1:10:15Crash in resolve_expected_expr()
🏃
1:10:15Crash in resolve_expected_expr()
🏃
1:10:15Crash in resolve_expected_expr()
🏃
1:10:37Fix the iterator in the STMT_SWITCH case in resolve_stmt()
1:10:37Fix the iterator in the STMT_SWITCH case in resolve_stmt()
1:10:37Fix the iterator in the STMT_SWITCH case in resolve_stmt()
1:10:55Run it to see that it works
🏃
1:10:55Run it to see that it works
🏃
1:10:55Run it to see that it works
🏃
1:11:03Add further tests, of while(), in resolve_test(), running to see how it works
🏃
🖮
1:11:03Add further tests, of while(), in resolve_test(), running to see how it works
🏃
🖮
1:11:03Add further tests, of while(), in resolve_test(), running to see how it works
🏃
🖮
1:13:09Add a type-checking test in resolve_test(), running to see how it works
🏃
🖮
1:13:09Add a type-checking test in resolve_test(), running to see how it works
🏃
🖮
1:13:09Add a type-checking test in resolve_test(), running to see how it works
🏃
🖮
1:13:53Note that it pretty much all works, and that statements aren't difficult to type-check
🗩
1:13:53Note that it pretty much all works, and that statements aren't difficult to type-check
🗩
1:13:53Note that it pretty much all works, and that statements aren't difficult to type-check
🗩
1:15:19Enable resolve_stmt() to handle both the presence and absence of a return value, adding a test, and running to see that it works
🏃
1:15:19Enable resolve_stmt() to handle both the presence and absence of a return value, adding a test, and running to see that it works
🏃
1:15:19Enable resolve_stmt() to handle both the presence and absence of a return value, adding a test, and running to see that it works
🏃
1:17:32Q&A
🗩
1:17:32Q&A
🗩
1:17:32Q&A
🗩
1:17:580b0000000000000 You have duplicate f5 function names
🗪
1:17:580b0000000000000 You have duplicate f5 function names
🗪
1:17:580b0000000000000 You have duplicate f5 function names
🗪
1:18:00Fix the func test names in resolve_test()
1:18:00Fix the func test names in resolve_test()
1:18:00Fix the func test names in resolve_test()
1:18:230b0000000000000 Will there be function overloading?
🗪
1:18:230b0000000000000 Will there be function overloading?
🗪
1:18:230b0000000000000 Will there be function overloading?
🗪
1:18:31chrisburtbrown You might have answered this already but can functions contain other functions?
🗪
1:18:31chrisburtbrown You might have answered this already but can functions contain other functions?
🗪
1:18:31chrisburtbrown You might have answered this already but can functions contain other functions?
🗪
1:20:00nothings2 This is why you use signed ints for everything and fuck size_t's unsignedness
🗪
1:20:00nothings2 This is why you use signed ints for everything and fuck size_t's unsignedness
🗪
1:20:00nothings2 This is why you use signed ints for everything and fuck size_t's unsignedness
🗪
1:21:51nothings2 Do compound literals require filling out all fields, or are they 0-inited?
🗪
1:21:51nothings2 Do compound literals require filling out all fields, or are they 0-inited?
🗪
1:21:51nothings2 Do compound literals require filling out all fields, or are they 0-inited?
🗪
1:23:32recursivechat Are you making a compiler? Or your own language?
🗪
1:23:32recursivechat Are you making a compiler? Or your own language?
🗪
1:23:32recursivechat Are you making a compiler? Or your own language?
🗪
1:25:08buzzfizz64 pervognsen Sorry if I missed it, but are you going to change the syntax of function pointers?
🗪
1:25:08buzzfizz64 pervognsen Sorry if I missed it, but are you going to change the syntax of function pointers?
🗪
1:25:08buzzfizz64 pervognsen Sorry if I missed it, but are you going to change the syntax of function pointers?
🗪
1:26:17nothings2 pervognsen I've forgotten the reason why you're writing a language in the first place. Is there no gcc or clang for RISC-V?
🗪
1:26:17nothings2 pervognsen I've forgotten the reason why you're writing a language in the first place. Is there no gcc or clang for RISC-V?
🗪
1:26:17nothings2 pervognsen I've forgotten the reason why you're writing a language in the first place. Is there no gcc or clang for RISC-V?
🗪
1:27:150b0000000000000 You'll also get a lot of coverage of the language that way
🗪
1:27:150b0000000000000 You'll also get a lot of coverage of the language that way
🗪
1:27:150b0000000000000 You'll also get a lot of coverage of the language that way
🗪
1:27:51godling72 pervognsen Debugger too?
🗪
1:27:51godling72 pervognsen Debugger too?
🗪
1:27:51godling72 pervognsen Debugger too?
🗪
1:29:35naysayer88 chocotDecent
🗪
1:29:35naysayer88 chocotDecent
🗪
1:29:35naysayer88 chocotDecent
🗪
1:29:410b0000000000000 Will you be writing an interpreter for Ion in C?
🗪
1:29:410b0000000000000 Will you be writing an interpreter for Ion in C?
🗪
1:29:410b0000000000000 Will you be writing an interpreter for Ion in C?
🗪
1:31:270b0000000000000 How will you be confident that your Ion compilation is correct?
🗪
1:31:270b0000000000000 How will you be confident that your Ion compilation is correct?
🗪
1:31:270b0000000000000 How will you be confident that your Ion compilation is correct?
🗪
1:33:11buzzfizz64 pervognsen Are you going to do some sort of formal verification at some point?
🗪
1:33:11buzzfizz64 pervognsen Are you going to do some sort of formal verification at some point?
🗪
1:33:11buzzfizz64 pervognsen Are you going to do some sort of formal verification at some point?
🗪
1:34:44Stop recording
🗩
1:34:44Stop recording
🗩
1:34:44Stop recording
🗩