Skip to content

Latest commit

 

History

99 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

todo list for ceorron projects

High level project plan (compiler)

  • aether compiler [o]
  • aether standard library [ ]
  • aether code port [ ]
  • aether compiler v 2.0 [ ]
  • hot swapping aether code [ ]

TODO on the compiler

  • return value optimisation (RVO) [x]

  • with block + testing [x]

  • lambda + testing [o]

  • local vector<::> + testing [o]

  • global vector<::> + testing [ ]

  • coroutines/yield + testing [x]

  • try/catch/default/throw + testing [x]

  • goto/label blocks + testing [o]

  • local/global modules [ ]

  • constant propagation [o] - here

  • basic_shared_pointer [x] #0

  • heavy_code_review [] #1

  • fptrs, lambda fptrs, coroutine [x] #1.2

  • auto/typeof on types [x] #1.3

  • rvo, tvo, yvo on return, throw or yeild [x] #1.4

  • operator()/{}/[] like function call [] #1.5

  • types [x] #1.6

  • code review st_variable [x] #1.6.1

  • array begin/end test [x] #1.7

  • function_data needs to be present [] #1.8 ???

  • struct virtual functions [x] #1.10

  • constants [o] #2 - here

  • structure initialisation []

  • line numbers + errors [] #1.11

  • full code review [] #1.12 - just complete everything (go through all of the features again, fix up missing parts)

  • variable init [] #1.13

  • crashing bug [] #1.14 ???

  • ternary needs to handle destruction correctly [] #1.15

  • template spec tests [] #1.16

  • generated functions (reference first parameter) [] #1.9

  • types [] #3

  • initialisation [] #4

  • globals [] #5

  • low level concerns [] #6 - select, reverse stack, with-call on destructors, fptrs/lmbdaptrs takes pointer to structure

  • first parameter is a reference then pass by reference [o] #7

  • this/self destructor [] #8

  • line numbers [] #9

  • error(s) messages [] #10

  • incomplete operators [] #11

  • missing inbuilt functions [] #12

  • foreach break continue, foreach begin/end [] #13

  • stack needs to grow in the correct direction [] #14

  • include_ []

  • link_ []

  • import_ []

  • as_ []

  • friend_ []

  • namespace_ []

  • using_ []

  • direct_ []

  • true_ []

  • false_ []

  • result_ []

  • self_ []

  • if_ []

  • else_ []

  • switch_ []

  • case_ []

  • default_ []

  • try_ []

  • catch_ []

  • for_ []

  • for_base_ []

  • in_ []

  • while_ []

  • do_ []

  • when_ []

  • with_ []

  • label_ []

  • break_ []

  • continue_ []

  • goto_ []

  • return_ []

  • yield_ []

  • yield_return_ []

  • throw_ []

  • mutable_ []

  • immutable_ []

  • extern_ []

  • link_extern_ []

  • inline_ []

  • def_ []

  • alias_ []

  • proxy_ []

  • operator_ []

  • final_ []

  • delete_ []

  • explicit_ []

  • virtual_ []

  • system_function_ []

  • class_ []

  • struct_ []

  • enum_ []

  • build_type_ []

  • sizeof_ []

  • typeof_ []

  • spec_ []

  • expr_ []

  • except_ []

  • defer_ []

  • global_ []

  • local_ []

  • static_ []

  • host_ []

  • const_ []

  • volatile_ []

  • hidden_ []

  • no_alias_ []

  • capture_ []

  • init_set_ []

  • no_init_ []

  • auto_ []

  • this_ []

  • void_ []

  • signed_ []

  • unsigned_ []

  • bool_ []

  • char_ []

  • short_ []

  • int_ []

  • long_ []

  • float_ []

  • double_ []

  • int8_ []

  • int16_ []

  • int32_ []

  • int64_ []

  • int128_ []

  • uint8_ []

  • uint16_ []

  • uint32_ []

  • uint64_ []

  • uint128_ []

  • float32_ []

  • float64_ []

  • yield_no_lex []

  • except_no_lex []

  • mutable_no_lex []

  • global_no_lex []

  • local_no_lex []

  • host_no_lex []

  • const_no_lex []

  • volatile_no_lex []

  • no_alias_no_lex []

  • mem_loc []

  • mem_loc_no_lex []

  • identifier [x]

  • name [x]

<> NOTE these end as soon as we find a value that isn't a valid hex number

  • HEX_VALUE [x]
  • UNICODE_UTF32_CHAR [x]
  • UNICODE_UTF16_CHAR [x]
  • HEX_CHAR [x]
  • BIT_CHAR [x]

<> constants

  • STRING [x]

  • HEX_DIGIT [x]

  • DEC_DIGIT [x]

  • NO_DEC_DIGIT_1 [x]

  • NO_DEC_DIGIT_2 [x]

  • BIT_DIGIT [x]

<> integer constants

  • INT_CONSTANT_HEX [x]

  • INT_CONSTANT_BIN []

  • INT_CONSTANT_DEC [x]

  • CHAR_CONSTANT [x]

  • INT_CONSTANT [o]

<> float constants <> 12345[eE][+-]123[lLfF]?

  • FLOAT_CONSTANT_1 [x]

<> .123([[eE][+-]123)?[lLfF]?

  • FLOAT_CONSTANT_2 [x]

<> 12345.([[eE][+-]123)?[lLfF]?

  • FLOAT_CONSTANT_3 [x]

  • FLOAT_CONSTANT [x]

  • BOOLEAN [x]

  • numberconstant []

  • strcnst []

  • tokenconstant []

  • constant []

  • cdecl:- []

  • include []

  • import []

  • compilerdirective []

  • defer_spec []

  • defer_spec_no_init []

  • params []

  • initializer []

  • templatespecifier []

  • namelist [x]

  • names []

<> (1, only those without initializers, 2 those where init_set is specified + those without initializers, 3 all except no_init with initializers, 4 all) <> no_init member = default, default no_init is to uninitialized

  • init_desc []

  • qualifiers []

  • qualifiers_no_lex []

  • funct_qlfrs_no_lex []

  • shrt_funct_qlfrs_no_lex []

  • funct_qlfrs []

  • shrt_funct_qlfrs []

  • stct []

  • arr []

  • dl []

  • star []

  • ref []

  • dref []

  • cref []

  • fptr []

  • nt []

  • sbknd []

  • subkind []

  • subtype []

  • basictype []

  • structuretype []

  • lmbdatype []

  • fptrtype []

  • autotype []

  • typeoftype []

<> cannot have reference to reference

  • subarraylen []

  • arraysize []

  • rf []

  • ptrarraydec []

  • innertype []

  • type []

  • membertype []

  • member []

  • basemember []

  • structuremember []

  • if [x]

  • elseif [x]

  • else [x]

  • switch [x]

  • case [x]

  • default [x]

  • try [x]

  • catch [x]

  • foreach []

  • forbaseeach []

  • for [x]

  • while [x]

  • dowhen [x]

  • dot []

  • arw []

  • index []

  • dotmem []

  • baseaccess []

  • memaccess []

  • funccall []

  • constructcall []

  • refconstructcall []

  • listconstructcall []

  • reflistconstructcall []

  • bracketexpression [x]

  • cast []

  • szeof [x]

  • variable []

  • preops []

  • postops []

  • scopeblock []

  • withblock []

  • labelblock []

  • lambdafunc []

  • constexpression []

  • fptrgen []

  • atom:- [x]

<> TODO select on || and &&

  • op11 [x]
  • op10 [x]
  • op9 [x]
  • op8 [x]
  • op7 [x]
  • op6 [x]
  • op5 [x]
  • op4 [x]
  • op3 [x]
  • op2 [x]
  • op1 [x]

<> operator precendence hierarchy

  • op11g [x]

  • op10g [x]

  • op9g [x]

  • op8g [x]

  • op7g [x]

  • op6g [x]

  • op5g [x]

  • op4g [x]

  • op3g [x]

  • op2g [x]

  • op1g [x]

  • ternary []

  • expr [x]

  • valexpression [x]

  • rtn []

  • yld []

  • thrw []

  • loopctlr []

  • goto []

  • basiclabel []

  • expression []

  • exprend [x]

  • block [x]

  • expr_block []

  • func_expr_block []

<> classes/structs (first is match value, second is value, third is match type, fourth is type)

  • templateparam []

  • templateparams []

  • basedef [x]

  • vardef [x]

  • virtualfuncdec [x]

  • destructor []

  • proxy []

  • clsmember []

  • class []

<> functions and operators

  • prps [o]

  • genops [o]

  • funcdef []

  • genoperator []

  • preoperator []

  • castoperator []

<> global variable

  • globalvar []

<> build a type, needed for template classes

  • buildtype []

<> def/alias

  • aliastype []

<> enum type

  • enumname:- [x]
  • enum [x]

<> declare friend of module / namespace

  • friend []

<> declare using module / namespace (mean you don't need the "name." of the namespace or module)

  • using [x]

<> declare namespace

  • namespace [x]

  • decl:- [x]

  • declaration:- [x]

  • decls [x]

  • main []

Top Level Plan - Project plan

  • compiler/virtual machine (all implementable features, X86-64 only) [here]
  • remake all of the libraries (everything except dionysus and opengui)
  • make new libraries
    • copy
    • deep copy
    • comparison
    • streaming (in, out)
    • string printing
    • cycle scan
  • make opengui (concurrent with below)
    • make each of the gui editors (keep adding)
      • aether text editor
      • make dionysus (concurrent with below)
        • IDE (complete text editor to have other features)
        • game engine editor
        • 3D modelling editor
        • 2D modelling editor
        • 3D animation editor
        • 2D animation editor
        • terrain generator editor
        • automation tools editor
        • image editor
        • sound editor
        • video editor
        • font editor
        • business tools
        • math tools
      • flow chart programming (FSM)
      • flow chart programming (flow diagram)
      • 3D design editor
      • 2D design editor
      • video editor
      • music editor
      • sound effect editor
      • math tools editor
      • AI library (rule based programming)
        • AI assistant
        • AI designer
        • AI driver
        • AI oracle
        • AI task library
  • do self hosting compiler/virtual machine (aether compiles itself)
    • compile to other targets (arm, gpu, wasm, etc.)
  • hot swappable code (plugins)
  • other compiler improvements
  • remove c++ code base (move everything else across)
  • download code/release code/online shop facilities

(KEY: X is complete, O is partial, empty is not started yet)

About

my project todo list

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors