Skip to content
Update Spring 2021 authored by Jonathan Goble's avatar Jonathan Goble
## **Week 1:** February 5 to February 10
- Set up repo ✅
## **Week 2:** February 10 to February 17
- Build system ✅
- Book progress:
- Chapter 14 code and notes ✅
## **Week 3:** February 17 to February 24
- Book progress:
- Chapter 15 code and notes ✅
- Challenges:
- Compressed line information ✅ (issue #30, merge request !2)
- More than 256 constants ✅ (issue #31, merge request !3)
## **Week 4:** February 24 to March 10 (includes spring break)
- Book progress:
- Chapter 16 code and notes ✅
- Chapter 17 code and notes ✅
- Chapter 18 code and notes [EXTRA] ✅
- Challenges:
- String interpolation: determine syntax and tokenization ✅ (issue #33)
- Ternary operator: write parsing code ✅ (issue #34, merge request !4)
- Modulo and exponent operator [EXTRA] ✅ (issue #9, merge request !6)
- Scientific notation and hexadecimal literals [EXTRA] ✅ (issue #4, merge request !7)
## **Week 5:** March 10 to March 17
- Book progress:
- Chapter 19 code and notes ✅
- Chapter 20 code and notes ✅
- Challenges:
- String interpolation implementation ✅ (issue #33, merge request !8)
- String escape sequences ❌ [moved to backlog] (issue #1)
- Generic hash tables [stretch goal] ❌ [moved to backlog] (issue #35)
## **Week 6:** March 17 to March 24
- Book progress:
- Chapter 21 code and notes ✅
- Chapter 22 code and notes ✅
- Chapter 23 code and notes [stretch goal] ✅
- Challenges:
- Duplicate constant elimination ✅ (issue #36, merge request !9)
- Ternary operator bytecode [stretch goal] ✅ (issue #34, merge request !4)
## **Week 7:** March 24 to March 31
- Book progress:
- Chapter 24 code and notes ✅
- Challenges:
- `break` and `continue` statements ✅ (issue #22, merge request !10)
- `switch` statements ✅ (issue #38, merge request !11)
- Native function improvements (merge request !13):
- Arity checking ✅ (issue #40)
- Errors from native functions [stretch goal] ✅ (issue #41)
- Instruction pointer optimization [stretch goal] ❌ [moved to backlog] (issue #39)
## **Week 8:** March 31 to April 7
- Book progress:
- Chapter 25 code and notes ✅
- Chapter 26 code and notes ✅
- Chapter 27 code and notes ✅
- Chapter 28 code and notes [stretch goal] ✅
- Challenges (all in merge request !11):
- Handling missing fields ✅ (issue #44)
- Dynamic field access ✅ (issue #45)
- Deleting fields ✅ (issue #46)
## **Week 9:** April 7 to April 14
- Book progress:
- Chapter 29 code and notes
- Chapter 30 code and notes
- Challenges:
- `init()` optimization (issue #47)
- Resolve all merge conflicts and merge all branches into `main`
- Define opcode set for register-based bytecode (issue #32)
## **Week 10:** April 14 to April 21
- Challenges:
- Implement register-based bytecode (issue #32)
- Begin generational garbage collector [stretch goal] (issue #43)
## **Week 11:** April 21 to April 28 (finals week)
- Challenges:
- Finish generational garbage collector (issue #43)
- Generic hash tables [stretch goal] (issue #35)
## Summer
In order to keep my mind fresh on this, I plan to spend an average of about an hour per week over the summer on this. Some potential summer tasks:
- Design a complete C API, including a way to define classes
- Maybe implement part or all of it?
- Design a standard library using that C API
- Add basic collection types (issue #5)
- At minimum, lists/arrays and dictionaries
- ???
## Backlog
The backlog has been moved to [this page](Backlog) and expanded to include potential future tasks for later implementation.
\ No newline at end of file