Skip to content

Latest commit

 

History

History
204 lines (172 loc) · 12.8 KB

TODO.md

File metadata and controls

204 lines (172 loc) · 12.8 KB

TODO List

Table of Contents

1) Features not Planned yet

1.1) Syntax Highlighting Support for Various Editors.

  1. vim
  2. vscode
  3. gitlab
  4. github

1.2) Predefined Variables

1.3) HVML Debugger

2) Features Planned for Version 1.0

2.1) Variants

  1. [0.9.6; Resolved] Optimize variant module.
  2. [0.9.2; Resolved] Full support for the new variant type: tuple.
  3. [0.9.2; Resolved] Implement some new APIs:
    • purc_variant_make_atom()
  4. [0.9.0; Resolved] Basic support for the new variant type: tuple.
  5. [Pending] Use an indepedent structure (hash table) to maintain the listeners of variants, so we can decrease the size of a variant structure.

2.2) HEE and HVML Parsing and Evaluating

  1. [0.9.16] Support for inherent methods for variants.
  2. [0.9.10; Resolved] Optimize the HVML and HEE parsing error messages.
  3. [0.9.6; Resolved] Optimize the evaluation of a VCM tree to decrease uses of malloc() and free().
  4. [0.9.2; Resolved] Provide support for triple-single-qutoe syntax and make sure the HEEs which are embedded in a string enclosed by two triple-double-quotes be evaluated.
  5. [0.9.2; Resolved] Support line comments in CHEE.
  6. [0.9.2; Resolved] Support for tuples.
  7. [0.9.2; Resolved] Support for string constants.
  8. [0.8.2; Resolved] Support for prefix for foreign tag name. See Section 3.1.1 of HVML Specifiction V1.0.
  9. [0.8.2; Resolved] Support for using Unihan characters in variable names and property/method names. See Section 2.2.2 of HVML Specifiction V1.0.
  10. [0.8.2; Resolved] Optimize the content evaluation of foreign elements: make sure there is only one text node after evaluating the contents $< Hello, world! --from COROUTINE-$CRTN.cid.
  11. [0.8.2; Resolved] Improve eJSON parser to support the following string patterns:
    • file://$SYS.cwd/a.hvml
    • $SYS.time,$SYS.time~$SYS.time-$SYS.time@$SYS.time#$SYS.time%$SYS.time^$SYS.time&$SYS.time*$SYS.time+$SYS.time=$SYS.time\$SYS.time|$SYS.time>$SYS.time:$SYS.time!$SYS.time<$SYS.time?$SYS.time;
    • $SYS.time;$SYS.time、$SYS.time $SYS.timea$SYS.time。$SYS.time,$SYS.time“$SYS.time”$SYS.time
  12. [0.8.2; Resolved] Keep self-closed foreign elements not changed.

2.3) Predefined Variables

  1. [0.9.16] Support for the following URI schemas for $STREAM:
    • tcp
    • fifo
  2. [0.9.16] Support for the following extension protocols for $STREAM:
    • websocket
  3. [0.9.16] Basic support for $SOCK.
  4. [0.9.18] Complete the implementation of the following predefined variables:
    • $URL
    • $STR
    • $DATA
  5. [0.9.10; Resolved] Implementation of $CRTN.static and $CRTN.temp.
  6. [0.9.8; Resolved] Basic support for $PY.
  7. [0.9.6; Resolved] Complete the implementation of the following predefined variables:
    • $DOC (including the document entity and the element collection entity).
  8. [0.9.2; Resolved] In the implementation of predefined variables, use the interfaces for linear container instead of array.
  9. [0.8.2; Resolved] Implement $RUNNER.chan and the native entity representing a channel, which can act as an inter-coroutine communication (ICC) mechanism. See Section 3.2.7 of HVML Predefined Variables V1.0.
  10. [0.8.2; Resolved] Tune $SYS.sleep to utilize evaluating again.

2.4) eDOM

  1. [0.9.6; Resolved] Optimize the implementation of element collection, and provide the support for CSS Selector Level 3.
  2. [0.9.6; Resolved] Optimize the implementation of the map from id and class to element(s).
  3. [Pending] Enhance purc_document to fast validate an HVML handle.
  4. [Pending] Support for the new target document type: plain and/or markdown.

2.5) Interpreter

  1. [0.9.16] Support for new renderer events: rdrState:pageActivated and rdrState:pageDeactivated.
  2. [0.9.18] The generation and handling mechanism of uncatchable errors:
    • Support for the element error.
    • The element error: support for src, param, and method attributes.
  3. [0.9.18] Review all uses of exception names.
  4. [0.9.18] Review the implementation of all elements.
  5. [0.9.14; Resolved] Tune or enhance the implementation according to the revisions from RC9 to RCd of HVML Spec V1.0:
    • The default result data of a foreign element: inheriting from the proceeding operation.
    • Tune the manners of test, match, differ elements and fix known bugs.
    • Tune the manners of back and update elements and fix known bugs.
    • Tune the manners of update elements to reflect the wholly adverb attribute.
    • The result data of a catch elmenet, should be defined as an object to describe the exception.
    • Enhance init element to support RAW-HEADERS when issuing an HTTP request to get data from a remote URL.
    • Enhance request element to pass CSS selector directly to the renderer instead of passing the HVML handle of the element.
  6. [0.9.10; Resolved] Tune the implementation related to PURCMC protocol to support plainwin/widget management.
  7. [0.9.6; Resolved] Improve support for the attribute in, so we can use a value like > p to specify an descendant as the current document position.
  8. [0.9.6; Resolved] Improve init to load content with MIME type text/html as a document entity.
  9. [0.9.4; Resolved] Improve the implementation of the element update:
    • The value of the attribute to can be intersect, subtract, and xor.
    • The value of the attribute at can be content.
    • The support for the adverb attribute individually.
  10. [0.9.4; Resolved] Full support for request element.
  11. [0.9.0; Resolved] Improve the implementation of the element bind:
    • The support for the adverb attribute constantly.
    • The support for the substituting expression.
  12. [0.9.0; Resolved] Improve the element init to make the attribute at support _runner, so we can create a runner-level variable.
  13. [0.9.0; Resolved] Improve the data fetcher to generate the progress events when fetching data.
  14. [0.9.0; Resolved] Improve the function to get data from remote data fetcher:
    • The element archetype: support for src, param, and method attributes.
    • The element archedata: support for src, param, and method attributes.
    • The element execpt: support for src, param, and method attributes.
    • The element init: support for from, with, and via attrigbutes.
    • The element define: support for from, with, and via attributes.
    • The element update: support for from, with, and via attributes.
  15. [0.9.0; Resolved] Support for the equivalence of the context variable <: ~.
  16. [0.9.0; Resolved] Support for the equivalences and/or abbreviations of some adverb attributes.
  17. [0.9.0; Resolved] Support for the new preposition attribute: idd-by.
  18. [0.9.0; Pending] Improve the element bind to make the attribute at support _runner, so we can create a runner-level variable.
  19. [0.8.2; Resolved] Enhance the evaluation of VCM to support PURC_ERROR_AGAIN.
  20. [0.8.2; Resolved] Enhance scheduler to support support PURC_ERROR_AGAIN.
  21. [0.8.2; Resolved] Raise an exception for a failed evaluation of an eJSON expression.
  22. [0.8.2; Resolved] Enhance purc_coroutine_dump_stack to show the specific failed position, e.g., a call to a getter or setter with arguments, when an uncaught exception raised.
  23. [0.8.2; Resolved] The support for the attribute type of the element archetype.
  24. [0.8.1; Resolved] Support for rdrState:connLost event on $CRTN.
  25. [0.8.1; Resolved] Implement new APIs: purc_coroutine_dump_stack.
  26. [0.8.1; Resolved] Support for use of an element's identifier as the value of the at attribute in an init element.
  27. [0.8.1; Resolved] Improve the element init to make the attribute as is optional, so we can use init to initilize a data but do not bind the data to a variable.
  28. [0.8.1; Resolved] Implement the request tag (only inter-coroutine request).
  29. [0.8.1; Resolved] Provide support for type attribute of the element archetype. It can be used to specify the type of the template contents, for example, plain, html, xgml, svg, or mathml.

2.6) purc

  1. [0.9.18] Enhance Foil to support table.
  2. [0.9.18] Enhance Foil to support flex and grid layout.
  3. [0.9.18] Enhance Foil to support full-screen, controls, and multiple-page rendering.
  4. [0.9.10; Resolved] Enhance Foil to support dynamic change of element styles and contents.
  5. [0.9.8; Resolved] Enhance Foil to render borders.
  6. [0.9.8; Resolved] Enhance Foil to support floats and absolute positioning.
  7. [0.9.6; Resolved] Enhance Foil to support meter and progress elements.
  8. [0.9.4; Resolved] Enhance Foil to support more properties and layouts except for table.
  9. [0.9.0; Resolved] A simple built-in HTML renderer (Foil) for text terminal via THREAD protocol.

2.7) More Platforms

  1. [0.9.20] Windows

2.8) Others

  1. [0.9.18] Clean up all unnecessary calls of PC_ASSERT.
  2. [0.9.18] Normalize the typedef names.
  3. [0.9.18] Rewrite the code fragments in coding pattern do { if (...) break; } while (0) in source files: We should only use this pattern when defining macros or just creating a temp. variable scope, because this coding pattern seriously reduces code readability.
  4. [0.9.18] Tune API description.
  5. [0.9.0; Resolved] Merge repo of DOM Ruler to PurC (under Source/CSSEng and Source/DOMRuler).
  6. [0.9.0; Resolved] Merge repo of PurC Fetcher to PurC (under Source/RemoteFetcher).
  7. [0.8.1; Resolved] Tune PC_ASSERT to suppress any code when building for release.

2.9) Known Bugs and Test Cases

  1. [0.9.4; Resolved] Add new test cases or enhance test cases for newly found bugs.
  2. [0.9.4; Resolved] Source/test/interpreter/03-again-sleep.hvml: the child coroutine only writes 5 lines, but 6 lines expected.
  3. [0.9.4; Resolved] Source/Sample/hvml/calculator-bc.hvml will cause purc core dump if there is no bc installed in the system.
  4. [0.9.2; Resolved] Add new test cases for following new bugs.
  5. [0.9.2; Resolved] Check eJSON parser for C0 control characters in strings.
  6. [0.9.2; Resolved] Crash if the content of a foreign element contains a ( character.
  7. [0.9.2; Resolved] The exrepssions in hvml might be evaluated twice.
  8. [0.9.2; Resolved] Keep all whitespaces in text content of a foreign element, but the leading whitespaces are removed now.
  9. [0.9.2; Resolved] There is an odd call to writelines() in Source/test/interpreter/comp/31-again-channel-reader-writer.hvml.
  10. [0.8.2; Resolved] The condition handler will get PURC_COND_COR_EXITED after got PURC_COND_COR_TERMINATED.
  11. [0.8.2; Resolved] When dumping the stacks, we should use the writing order the attributes of an element, not the sorted order.
  12. [0.8.2; Resolved] Some requests to renderer might be sent twice.
  13. [0.8.1; Resolved] The content of an iterate element may be evaluated twice.
  14. [0.8.1; Resolved] The samples with bad result:
    • Incorrect evaluation logic of a CHEE with && and ||.
    • hvml/greatest-common-divisor.hvml: Adjust the evaluating logic of CHEE.
    • hvml/hello-world-c-bad.hvml: $0<) Helo, world! -- from HVML COROUTINE # $CRTN.cid"; expected: 0) Helo, world! -- from HVML COROUTINE # $CRTN.cid; but got 0.
  15. [0.8.1; Resolved] Improve eJSON parser to support the following patterns:
    • $?.greating$?.name: Hello, Tom
    • $?.greating{$?.name}: Hello, Tom
    • {$?.greating}{$?.name}: Hello, Tom
    • $?.greating<any CHAR not a valid variable token character>: Hello<any CHAR not a valid variable token character>
    • ${output_$CRTN.target}: $output_html or $output_void; the evaluated result in { } should be a string and a valid variable token.
  16. [0.8.1; Resolved] Raise exceptions if encounter errors when the fetcher failed to load a resource of a given URL.
  17. [0.8.1; Resolved] When the contents of the target document is very large, send the contents by using operations writeBegin, writeMore, and writeEnd.