Permalink
Browse files

Reorganize and combine TODO lists

  • Loading branch information...
1 parent f3b81bb commit 311ba524a74476accc8b05a45f61e75654f2fc57 @sorear committed Feb 12, 2011
Showing with 107 additions and 91 deletions.
  1. +107 −30 TODO
  2. +0 −61 docs/lhf.txt
View
137 TODO
@@ -1,30 +1,107 @@
-From the v6/TODO:
-These things were noticed during translation, but to fix them now would
-only slow me down...
-
-* sprintf, in particular, the ability to make numbers hex
-* no qw< >
-* Any strificatrion/numification warnings would be useful
-* no is rw on attributes and methods
-* &split
-* &callsame
-* BUILD
-* non-$ attributes; @.foo and @<foo>
-* :$.foo is broken
-* return()
-* stashes should be accessed as common values
-* "Action method ::($name) not implemented", also needs $<sym>
-* context accelerators need to robustly handle undefined objects
-* explicitly imprecise error reporting - lines A-B
-* @PROCESS::ARGS ::= [1,2,3]; ok +[ @*ARGS ] == 3 # Bug
-
-Other stuff
- * Write a ROADMAP
- * Flesh out documentation a lot
-
-For STD difference minimization:
- * Find a compromise on :$*endsym
- - TimToady and I seem to both not hate traits
- * Find a compromise on cursor mutability
- * basic multimethods
- * constant %foo = (a => 1, b => 2)
+Here are a bunch of project ideas, both for me and for anyone else who
+wants to help out. Starred items are ones I've already spent time
+thinking about; check with me if you want to build on that.
+
+EASY
+
+ Add your favorite missing function to the setting, with tests.
+ In particular, I could use: sprintf, dir, write, close, split, ...
+
+ Add $*ARGFILES, %*ENV, your favorite other *-var.
+
+ Add the 'loop' statement. Should be very straightforward.
+
+ Add decimal literals. (Don't try to implement your own floating point
+ radix converter; use +$str)
+
+ *Optimize control exceptions to gotos in the intrablock case.
+
+ Add more benchmarks to perf/.
+
+ Fix the qw< > parsing problems.
+
+ Strip whitespace from here documents.
+
+ return and take need to accept multiple arguments and wrap them in a Parcel
+
+ :$.foo is broken. Find out why and fix it.
+
+ Binding to values like @PROCESS::ARGS doesn't contextualize correctly. Fix.
+
+MEDIUM
+
+ Implement buffer types and binary I/O.
+
+ Implement a general socket API.
+
+ Design and implement a generic system for multiplexed and non-blocking I/O.
+
+ *CATCH and CONTROL blocks.
+
+ Jump table optimization for when chains.
+
+ Implement callsame.
+
+ Implement constant %foo = a => 1 and constant @foo = 1, 2. It needs to
+ contextualize into a list/hash or something like that.
+
+ Find out what readonly subs are supposed to do with lists, etc and implement
+ that. Also add return-rw, take-rw, and the is rw trait for subs and attrs.
+
+ *Implement BUILD submethod calling.
+
+ Implement @.foo contextualiztion and make $.foo contextualize.
+
+ Methods with variable names need to call the correct action method. (See
+ the horrible hack in NieczaActions.FALLBACK).
+
+ Audit accelerated context routines for correct undefined value and odd
+ representation handling. +Num shouldn't crash, etc.
+
+HARD
+
+ Design and implement some sort of NFG thing that allows use codes, graphs,
+ etc and handles canonical equivalence in regexes.
+
+ Replace nam with something that doesn't use as much memory. (Talk to
+ pmurias to get his experiences.)
+
+ *Implement junctions. You'll need to add some slightly tricky code
+ on the slow path of nominal type checks. You will also need to fix
+ the optimized builtins to use nominal type checking. Bonus points
+ if the optimizer can turn if $x == any(1,3,5) into a loop.
+
+ *Implement multiple dispatch.
+
+ Niecza is probably the ideal platform for prototyping a concurrency
+ system which will whirlpool back into the synopses.
+
+ *Parallel hyperops! Read the Cilk papers, they seem to have a data
+ parallelism model most similar to what Perl 6 needs.
+
+ Understand the Str/Stringy distinctions, and improve stringification
+ and numification handling for Any. Develop a warning system.
+
+ *Explicitly imprecise error reporting. In many circumstances niecza
+ doesn't actually have an exact line number; it should be able to
+ report a range.
+
+ Design something to take the place of STD's :$*endsym, probably as
+ a trait of some kind.
+
+ Design something to deal with the last remnants of cursor mutability
+ in STD.pm6.
+
+ *"Immediate mode metamodel" - Metamodel::StaticSub object should be
+ constructed by the closing brace at the latest. This will require
+ a lot of STD hacking and is required for BEGIN to work.
+
+NASTY
+
+ *A multicore job scheduler would be cool. You'll need to talk with
+ TimToady on dependency extraction; there are some subtle points with
+ modules that export slangs.
+
+ *Figure out how eval can possibly work. Do it.
+
+ *Figure out how BEGIN can possibly work. Do it.
View
@@ -1,61 +0,0 @@
-"Low hanging fruit" - stuff that doesn't fit into a specific
-point in the timeline, and anybody can pick up whenever they
-feel like it. Not all of it is necessarily easy; I know some
-of you like big projects.
-
-* Generally speaking, the setting is very incomplete. Patches to add
- methods or subs to the setting, with tests, are welcome.
- - Series operators, stuff like that.
- - chop, trans, etc; a lot of basic Str/Num operators are missing
- - Beware - multiple dispatch is NYI!
-
-* Control structures still have a lot of unimplemented cases. loop
- should be pretty straightforward, for instance.
-
-* In particular, I/O is sorely lacking.
- - $*ARGFILES
- - open for writing; close
- - dir
- - IO::Socket
- - Buf stuff
- - %*ENV
-
-* If you want to add base functionality like CATCH blocks, talk to me
- first; I have plans on these. I don't think there are terribly many
- of this sort left though.
-
-* Contributions for perf/ are welcome and will be treated as challenges.
-
-* If you have Microsoft .NET, I'd like Niecza to work out of the box.
- That means a little bit of logic to probe for it, and then adapting
- niecza_eval to run .exe files directly instead of "mono foo.exe".
-
- diakopter took a crack at this and failed; his results:
-
- - Microsoft .NET 2.0 lacks HashSet, so you need to change ToolsVersion
- to 4.0 or copy in HashSet.
-
- - MSBuild doesn't like periods in rule names; rename them.
-
- - There's something wrong with the generated code which causes
- InvalidProgramExceptions to be thrown, although mono
- --security=verifiable has no problem with it.
-
-* Junctions should work. You'll need to add some slightly tricky code
- on the slow path of nominal type checks. You will also need to fix
- the optimized builtins to use nominal type checking. Bonus points
- if the optimizer can turn if $x == any(1,3,5) into a loop.
-
-* A multicore job scheduler would be cool. You'll need to talk with
- TimToady on dependency extraction; there are some subtle points with
- modules that export slangs.
-
-* Parallel hyperops! Read the Cilk papers, they seem to have a data
- parallelism model most similar to what Perl 6 needs.
-
-* Non-CLR backends would be great. There will probably be some changes
- needed first, but in general the CLR dependencies are all in .cs
- files.
-
-* Niecza is probably the ideal platform for prototyping a concurrency
- system which will whirlpool back into the synopses.

0 comments on commit 311ba52

Please sign in to comment.