Skip to content

Meeting Minutes

rpfister102 edited this page May 23, 2019 · 26 revisions

General Information

We schedules a weekly meeting together with our supervisor, Thomas Bocek. The meeting takes place every Thursday at 10:20 a.m. CET in Thomas' office.

If not mentioned otherwise, the following people did attend to the meeting: Remo Pfister, Keerthikan Thurairatnam, Thomas Bocek.

Meeting Protocol

Week 1:

Topic: Kickoff Meeting

Goal:

  • First introduction to the topic
  • Gather required information
  • Specify which project methods and technologies will be used
  • Move Repo to Bazo Repo
  • Give Thomas an Overview over the current project state (Structure, Documents a.s.o.)
  • (Maybe) Define core features of the language which the minimal compiler should fulfill

Questions & Answers:

  • Definition of Task (Aufgabestellung)

Proposals:

  • Use an agile project management method
  • Use Minimum Viable Product to build software
  • Use Go as programming language
  • Use Travis CI
  • Use Sonar Cube

Conclusion & Decisions:

  • @OffChain: Client Local Variables (Not stored in Blockchain)
  • Primary Goal is to have a running MVP

Weekly Goal:

  • Define the Task, create Project Structure, integrate CI and SonarCube and finish project plan and risk analysis

Week 2:

Topic: Define core language features

Goal:

  • Give Thomas an Overview over the current project state (Structure, Documents a.s.o.)
  • Define core features of the language which the minimal compiler should fulfill

Questions & Answers: See https://github.com/bazo-blockchain/lazo/wiki/Core-Feature-Proposal

Weekly Goal:

  • Implement Lexer for the core features

Week 3:

Topic: Lexer & Parser

Goal:

  • Present the current state of Lexer & Parser

Weekly Goal:

  • Complete Lexer & Parser implementations

Week 4:

Topic: Checker

Goal:

  • Code feedback from Thomas
  • Present the current state of Checker (Symbol construction phase)
  • Discuss Checker Rules for the first version

Weekly Goal:

  • Complete Checker implementation

Week 5:

Topic: Checker & Code Generator

Absent: Remo Pfister

Goal:

  • Present the current state of Checker (Type Resolution, Designator Resolution & Type Checker)
  • Discuss about VM integration and contract execution on blockchain

Decisions:

  • Function hash: first 4 bytes of SHA-3 hash of return types, function name and parameter types
    • ()test()
    • (int)test(int,bool)
    • (int,int)test(int,bool)
  • Differentiate between constract creation and function call at the beginning of the byte code
    • Contract creation --> jump to constructor
    • Function call --> jump to function (VM doesn't support this at the moment. It requires a map of function hash and byte position on contract)

Weekly Goal

  • Generate Bazo byte code

Week 6:

Topic: Code Generator

Goal:

  • Present the current state of Generator
  • Discuss about the issues with the Bazo VM and next steps

Decisions:

  • Adapt and extend the current Bazo VM for better high-level language support

Weekly Goal

  • Technical documentation of the current compiler version

Week 7:

Topic: Technical Documentation

Goal:

  • Present the technical documentation

Decisions:

  • Refactor lazo compiler
  • Fix Bazo VM issues and extend the opcodes

Weekly Goal

  • Finish documentation
  • Refactoring

Week 8:

Topic:

  • Lazo Refactoring
  • Bazo VM fixes and improvements
  • Update Lazo Generator with the new opcodes

Questions:

Decisions:

Weekly Goal

  • Fix VM and Miner
  • Implement new compiler features one after the other

Week 9:

The meeting did not take place.


Week 10:

Topic:

  • What we have done in the past two weeks
  • Bugfixes in VM & Miner
  • Go Module Usage in VM & Miner
  • Reference Types in the VM

Questions:

Decisions:

  • We created Github Issues for the troubles discussed

Weekly Goal

  • Fix VM and Miner
  • Implement structs and arrays as far as we get

Week 11:

The meeting was postponed to friday afternoon.

Topic:

  • SetContractVariables in Miner had an implementation issue
  • Solution for Struct Initialization Loops (Person in Person). Null Type, Nil in Background or Default Struct.
  • Feature Priorization

Questions:

  • Should we implement structs using null types, nil or with a default struct?
  • Are null checks now required?
  • Should we allow Contract variables initialization outside of the construction or functions?

Decisions:

  • We will try to use default structs to break the initialization loop. To do this, big changes in the vm are required, therefore an issue is created.

Weekly Goal

  • Fix VM and Miner
  • Implement new compiler features one after the other

Week 12:

Topic:

  • Status Update
  • Issues we have with arrays

Weekly Goal

  • Implement further features

Week 13:

The meeting did not take place as Thomas was at a conference.


Week 14:

Topic:

  • Abstract + Management Summary
  • Presentation
  • Show current state of documentation and code
  • Feature Freeze
  • Feature Priorization
  • Individual Reports

Questions:

  • How long should the presentation be?

Decisions:

Weekly Goal

  • Implement and Test Generator for Expressions