[video member=pervognsen stream_platform=twitch project=bitwise medium=speech title="Packages Demo & RISC-V Intro" vod_platform=youtube id=dvaTa6UHR48 annotator=Miblo] [0:09][Recap and set the stage for the day] [3:39][Packages: 3 Parts][:"file io"] [6:36][Demo packages, as used in test1.ion][:"file io"] [10:47][Explain the idempotent nature of packages, and the ability to import the same file (e.g. libc) multiple times][:"file io" :research] [12:04][Bulk imports][:"file io"] [15:09][:Run ion to demo use of the IONHOME environment variable][:"file io"] [19:06][Explain the change to noir to denote foreign C files][:"file io"] [20:30][Tree shaking[ref site=Wikipedia page="Tree shaking" url=https://en.wikipedia.org/wiki/Tree_shaking] and its influence on package processing][:"code generation" :"file io" :research] [28:22][Demo lazy :"code generation" by introducing an invalid bogus_func()] [34:09][Review the package :parsing code, including the notion of the current_package][:"file io" :research] [38:48][Explain the idempotency of sym_global_put(), and optional names for symbols][:"error handling" :"file io" :research] [45:49][Note that resolve_package_syms() only resolves symbols from the home package, unless you import using an explicit name][:"file io" :research] [47:42][Review changes to the generator to handle packages, including get_gen_name_or_default()][:"code generation" :"file io" :research] [52:15][Emphasise that this all works on gcc and msys2 on Windows, and gcc on Linux, and has been reported as working on Macintosh] [53:17][Q&A][:speech] [53:56][@printf_armin][So it searches in IONPATH for the file, but what happens when there are two files with equal names in the path?][:"file io"] [55:12][Set up to transition to RISC-V] [56:44][Introduce RISC-V[ref author="Andrew Waterman and Krste Asanović" title="The RISC-V Instruction Set Manual - Volume 1: User-Level ISA" url=https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-spec-v2.2.pdf] with mentions of 'The Case for the Reduced Instruction Set Computer'[ref author="David A. Patterson and David R. Ditzel" title="The Case for the Reduced Instruction Set Computer" url=https://www.cs.utexas.edu/users/fussell/courses/cs352h/papers/risc.pdf] and John Cocke[ref site=Wikipedia page="John Cocke" url=https://en.wikipedia.org/wiki/John_Cocke]][:isa] [1:01:01][Note that RISC-V is a tiered architecture[ref author="Andrew Waterman and Krste Asanović" title="The RISC-V Instruction Set Manual - Volume 1: User-Level ISA" url=https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-spec-v2.2.pdf]][:isa] [1:07:31][Recommend reading Chapter 2.2 Base Instruction Formats[ref author="Andrew Waterman and Krste Asanović" title="The RISC-V Instruction Set Manual - Volume 1: User-Level ISA" url=https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-spec-v2.2.pdf]][:isa] [1:11:03][Consider the major distinguishing feature of RISC-V to be its focus on load-store architecture[ref author="Andrew Waterman and Krste Asanović" title="The RISC-V Instruction Set Manual - Volume 1: User-Level ISA" url=https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-spec-v2.2.pdf] as opposed to x86][:isa] [1:18:30][Plan for the coming weeks of working with RISC-V and beyond, with reasons why we'll be emulating rather than working on real hardware][:emulation :isa] [1:26:46][Q&A] [1:27:16][@xanatos387][Will RISC-V in FPGA be limited to 32-bit due to gate count limitations, or is it plausible to do 64-bit?][:hardware :memory] [1:30:10][@sci4me][Assembler first probably?] [1:30:29][Sketch out the style of emulator we expect to build][:"code generation" :emulation] [1:37:42][@xanatos387][@pervognsen: I understand the compile-to-C backend is never going away, but just hypothetically, if that wasn't a constraint, what would you change / add about Ion while still staying in the same general design space?][:language] [1:40:33][Wrap it up with a reminder to read Chapter 2.2 Base Instruction Formats[ref author="Andrew Waterman and Krste Asanović" title="The RISC-V Instruction Set Manual - Volume 1: User-Level ISA" url=https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-spec-v2.2.pdf]][:isa] [/video]