filmov
tv
Making a WebAssembly interpreter in Ruby, part 22: local variables in identifier contexts

Показать описание
00:00:00 — Waiting to start
00:00:38 — Hello
00:01:46 — Retro
00:04:31 — Use #inspect to pretty-print ASTs in the interpreter
00:29:00 — Add `locals` index space to identifier context
01:42:49 — Add parameter and local names to identifier context when parsing functions
01:44:16 — Add `types` index space and `typedefs` to identifier context
01:46:14 — Skip identifier context well-formedness check for `typedefs`
01:47:26 — Rename `type_index` local to just `index` in #parse_typeuse
01:49:16 — Add type definitions to initial identifier context
01:51:10 — Look up the type index in the identifier context in #parse_typeuse
01:54:27 — Stop finding type definitions by name in the interpreter
01:59:59 — Add type information to Parameter AST nodes
02:14:33 — Add Result AST node and create it in ASTParser
02:19:30 — Automatically insert a type index referring to the first matching type definition
02:28:44 — Allow #parse_function to return a (potentially updated) identifier context
02:33:48 — Allow #parse_function to return an optional generated type definition
02:59:38 — Insert a generated type definition if no matching one can be found
03:09:17 — If function has no inline parameters and results, get them from the type definition
03:17:01 — Look up local identifier in identifier context during parsing
03:23:36 — Replace association list of locals with array in interpreter
03:36:26 — Determine function arity by counting its parameters
03:41:17 — Return names and locals separately from #parse_locals
03:55:45 — Remove name from Local AST node
03:56:54 — Inline #count_parameters in #invoke_function
04:00:41 — Use function’s type definition to determine its result arity
04:01:53 — Remove parameters and results from Function AST node
04:06:42 — Return names and parameters separately from #parse_parameters
04:20:36 — Remove name from Parameter AST node
04:21:28 — Remove name from Type AST node
04:25:00 — Use Type AST node to represent function types
04:30:02 — Add project contribution guidelines
04:43:52 — Rename #as_branch_target to #with_branch_handler
04:55:24 — Use `redo` in #with_branch_handler to jump backwards when in a loop
05:30:48 — Remove unused #with_branch_handler return value
05:35:12 — Replace #with_branch_handler `jump:` argument with optional `redo_on_branch:`
05:44:14 — Wrapping up
05:52:08 — Bye