Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Self-hosted transpiler #455

Closed
nikodemus opened this issue Sep 6, 2020 · 1 comment
Closed

Self-hosted transpiler #455

nikodemus opened this issue Sep 6, 2020 · 1 comment
Assignees
Labels
feature-lang Language or library feature

Comments

@nikodemus
Copy link
Owner

nikodemus commented Sep 6, 2020

Able to compile itself. Efficiency of generated code a non-issue.

  • build and execute generated C as part of tests
  • selector mangling
  • proper main
  • integers
  • unary messages
  • binary messages
  • keyword messages
  • let
  • assignment
  • simple blocks
  • blocks with arguments
  • block closures
  • slots & instance constructors & instance variable access
  • class
  • self
  • return
  • assignments to slots
  • prefix messages
  • class references
  • Self
  • Primitive Booleans
  • is
  • Block #finally
  • floats
  • strings
  • static allocation for literal strings
  • define integer
  • define float
  • define string
  • True & False
  • define boolean
  • dynamic bindings
  • interface definitions
  • type annotations: value
  • type annotations: method argument
  • type annotations: block argument
  • interface typechecks
  • type annotations: let binding
  • generate forward-declarations for builtin vtables (currently hardcoded)
  • type annotations: slot
  • type annotations: method return value
  • type annotations: block return value
  • automatic reader methods
  • arrays
  • extend
  • panic
  • import lang.any
  • import lang.stringOutput
  • Class#includes:
  • import needs to handle transitive dependencies automatically in transpiler
  • import lang.object
  • import lang.boolean
  • handle transitive relative imports in self-hosted interpreter and transpiler
  • required methods
  • import lang.iterable
  • import lang.interval
  • import lang.number
  • import lang.integer
  • import lang.float
  • selector
  • import lang.collection
  • import lang.ordered
  • import lang.array
  • backtrace for runtime errors
  • clean up #== and #isEquivalent (-> Boolean or not, defined where?)
  • implement C3 linearization for interface inheritance
  • import lang.string
  • TestTranspilerPreludeFloat fails when run without --fork-all - presumably an earlier tests leaves behind something?
  • records
  • define arrays
  • define records & instances
  • import lang.character
  • import lang.closure
  • import lang.exception
  • #perform:with:
  • import lang.selector
  • import lang.record
  • import lang.test
  • transpiler Main class#run:in: instead of #run.
  • import lang.output
  • impl FilePath
  • impl File
  • impl FileStream
  • import lang.filepath
  • import lang.file
  • import lang.filestream
  • impl Time
  • import lang.time
  • import bytearray (fails because making it Ordered breaks something)
  • import dictionary. Plan: alist-style implementation for now.
  • interpolated strings
  • transpiler to handle prelude properly: import into global environment
  • import impl.parser
  • transpile with whole prelude 🔥
  • Class and Interface globals in transpiler (and evaluator)
  • interface inheritance in runtime allocated classes
  • instantiation of slotless runtime classes
  • instantiation of heap-allocated runtime classes
  • class inheritance in runtime allocated classes
  • transpile evaluator 🔥
  • import lang.class
  • import lang.interface
  • uniquefy mangled global names
  • System#command:
  • transpile transpiler 🔥
@nikodemus nikodemus added this to the Foolang 0.2.0 milestone Sep 6, 2020
@nikodemus nikodemus self-assigned this Sep 6, 2020
@nikodemus nikodemus pinned this issue Sep 6, 2020
@nikodemus nikodemus added the feature-lang Language or library feature label Sep 18, 2020
@nikodemus
Copy link
Owner Author

🚀 done!

@nikodemus nikodemus unpinned this issue Jul 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-lang Language or library feature
Projects
None yet
Development

No branches or pull requests

1 participant