Skip to content

Latest commit

 

History

History
56 lines (53 loc) · 2.36 KB

Development.md

File metadata and controls

56 lines (53 loc) · 2.36 KB

Development of Julia Object System

A Document to register features that I still need to implement, plus, if I need to, logs for my development logic

What needs doing

  • 2.0 Macros
    • 2.0.1 defclass
    • 2.0.2 defgeneric
    • 2.0.3 defmethod
    • 2.0.4 defbuiltin
  • 2.1 Classes
  • 2.2 Instances
  • 2.3 Slot Access
  • 2.4 Generic Functions and methods
  • 2.5 Pre-defined Generic Functions and Methods
  • 2.6 MetaObjects
  • 2.7 Class Options
  • 2.8 Readers and Writers
  • 2.9 Generic Function Calls
  • 2.10 Multiple Dispatch
  • 2.11 Multiple Inheritance
  • 2.12 Class Hierarchy
  • 2.13 Class Precedence List
  • 2.14 Built-In Classes
  • 2.15 Introspection
  • 2.16 Meta-Object Protocols
  • 2.16.1 Class Instantiation Protocol
  • 2.16.2 The Compute Slots Protocol
  • 2.16.3 Slot Access Protocol
  • 2.16.4 Class Precedence List protocol
  • 2.17 Multiple Meta-Class Inheritance
  • 2.18 Extensions
    • 2.18.1 Meta-Objects for slot definitions
    • 2.18.2 CLOS-like method combination for generic functions
    • 2.18.3 CLOS or Dylan's strategy for computing the class precedence list
    • 2.18.4 Additional Metaobject protocols
  • Make check_polymorphism and check_class a JOS method
  • Make is_class
  • Make non-applicable-method predefined
  • If generic function does not exist when method created, auto generate it
  • Compute class precedence list
  • Compute slots
  • Refactor so that defclass uses instantiation protocol
  • Refactor so that defgeneric uses instantiation protocol
  • Refactor so that defmethod uses instantiation protocol
  • Add support for unions
  • Add call previous method
  • Improve how comparisons between slots is made so that I dont need to override hash
  • Check and Improve introspection assertions
  • Ability to call new without naming properties (in order?)
  • Create a Julia library?
  • Replace getfield(o, :class_of_reference) with class_of(o)
  • Solve warning on running tests "Warning: Assignment to Person in soft scope is ambiguous because a global variable by the same name exists: Person will be treated as a new local. Disambiguate by using local Person to suppress this warning or global Person to assign to the existing global variable."
  • Update branch protection
  • Uniformize naming conventions