Skip to content

4.0.0 Roadmap #26

Description

@mattbasta

Please update this issue with more.

Must-haves:

  • Delete the html_* plugins for good, because they're scary
  • Delete the count_* plugins, because they're mostly unused
  • Delete the strip_tags plugin, since it's most likely not safe
  • Delete all plugins banned in strict mode
  • Delete the following plugins, because they violate web best practices:
    • capitalize: Use text-transform in CSS instead.
    • truncate: Use overflow and text-overflow in CSS instead.
    • date_format: Does not support proper localization, out of scope of Brainy.
  • Remove the make_timestamp and escape_special_chars shared plugins, as they're only depended on by the plugins being removed above.
  • Remove $smarty->template, which is banned in strict mode.
  • Remove syntax features banned by strict mode.
  • Remove support for built-in functions with side effects that are banned in strict mode: reset(), current(), etc.
  • Remove SmartyBC.
  • Remove the inline param from {include}.
  • {* set stricter *} that requires all included templates to be strict

Nice-to-haves:

  • AST-based parser and compiler
  • Make it impossible to {include} or fetch a file outside of one of the recognized template directories.
  • Mode that reports which assigned variables were not accessed
    • API should be similar to fetchedTemplate() overridable method
    • Should be enabled with a static flag
    • May be possible to implement by making the scope array inside TemplateData be an object implementing PHP's ArrayAccess interface with zero overhead while mode is off (no new code branches)
  • Make buildFilepath not be insane.

Stretch:

  • 80% code coverage
  • ~100% code coverage for bundled plugins
  • Cut compilation times by 25%
  • Reduce IO-related PHP calls (filemtime, getcwd, etc.) by 25%

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions