-
Notifications
You must be signed in to change notification settings - Fork 25.5k
Closed
Labels
:Core/Infra/ScriptingScripting abstractions, Painless, and MustacheScripting abstractions, Painless, and MustacheMeta
Description
This issue is to track all upcoming feature/refactor work on the Painless project.
- (1) Documentation - Improved documentation including getting started guide, Painless specification, API, available contexts, and examples. (jdconrad) (in progress) (Painless: Improve Documentation #23777)
- (1) Types Removal - Replace the Painless Type with Java Class to reduce code complexity and be able to potentially take advantage of Java's upcoming value types. (jdconrad) (Painless: Replace Painless Type with Java Class during Casts #27847) (Completely Remove Painless Type from AnalyzerCaster in favor of Java Class #28329) (Remove Painless Type from MethodWriter in favor of Java Class. #28346) (Remove Painless Type from e-nodes in favor of Java Class #28364) (Remove Painless Type in favor of Java Class in FunctionRef #28429) (Further Removal of Painless Type from Lambdas and References. #28433) (Remove Painless Type From Painless Method/Field #28466) (Remove Painless Type From Locals, Variables, Params, and ScriptInfo #28471) (Painless: Complete Removal of Painless Type #31699)
- (5) Jar Separation - Separate Painless into it's own jar for consumption within other projects. (rjernst/jdconrad)
- (2) Multi-pass Compiler - Restructure compilation into a larger amount of passes doing a smaller amount of work. Also allow for custom passes/nodes. (jdconrad)
- (3) Safety Features - Improved safety features to prevent runaway loops and large memory allocations. (Painless: More Safety Features #30139)
- (5) Benchmarks - Improved benchmarking allowing for individual scripts to compared against each other with changes to the compiler.
- (1) Bindings - Add ability to cache values for certain methods when the values are read-only. (jdconrad) (in progress) (Painless: Add Bindings #33042) (Painless: Fix Bindings Bug #33274) (Painless: Add Static Methods Shortcut #33440) (Painless: Rename *Binding classes to *ClassBinding. #33865) ([Painless] Allow statically imported methods without whitelisted class #34370) ([Painless] Add instance bindings #34410) ([Painless] Add a Map for java names to classes for use in the custom classloader #34424)
- (3) Factory Refactor - Clean up the code used to generate the factories for contexts. (jdconrad)
- (2) Definition Refactor - Clean up definition to have default types and data structures that make more sense. (jdconrad) (Painless: Restructure Definition/Whitelist #31879) (Painless: Refactor Lookup into Multiple Classes #32017) (Painless: Move and Rename Several Methods in the lookup package #32105) (Painless: Fix Bug with Duplicate PainlessClasses #32110) (Painless: Add PainlessClassBuilder #32141) (Painless: Clean up addPainlessClass #32142) (Painless: Simplify Naming in Lookup Package #32177) (Painless: Clean up add methods in PainlessLookup #32258) (Painless: Update More Methods to New Naming Scheme #32305) (Painless: Decouple PainlessLookupBuilder and Whitelists #32346) (Painless: Add MethodType to PainlessMethod #32441) (Painless: Add PainlessConstructor #32447) (Painless: Clean up PainlessMethod #32476) (Painless: Clean Up PainlessField #32525) (Painless: Move Some Lookup Logic to PainlessLookup #32565) (Painless: Use LocalMethod Map For Lookup at Runtime #32599) (Painless: Clean up FunctionRef #32644) (Painless: Move More Logic to PainlessLookup #32689) (Painless: Clean up PainlessCast #32754) (Painless: Clean Up Whitelist Names #32791) (Painless: Change fqn_only to no_import #32817) (Painless: Cleanup Cache #33963)
- (3) Improved Debugging - Add improved debugging features.
- (3) Better Error Messages - Most of the error messages in Painless that get hit are fairly abstract and could use improvement.
- (6) IDE Support - Exploration of adding an IDE support in Elipse/Intellij for Painless scripts or possibly Kibana.
- (2) Improved Contexts - Refactor existing contexts to give them the appropriate types/variables and whitelists along with adding new ones where necessary. (rjernst)
- (3) Grammar Improvements - Refactor the grammar to remove the need for type context/regex context if possible. (jdconrad)
- (4) Template Language - Make Painless a JSON friendly template language. (Painless as a JSON-friendly templating language #24529)
- (5) Whitelist Versioning - Explore ideas for how to properly deprecate classes/methods from the whitelist.
-
(5) Internal Methods - Explore ideas for how to enable/disable internal methods within the whitelist. - (2) Script Size - Make the size of a script based on the context its run in. ([Scripting] Make Max Script Length Setting Dynamic #35184)
- (2) Documentation API - Create a REST API to return information about a specified context's available classes, methods, and fields along the execute method signature. Create a gradle task to convert these to a nicely documented API.
-
(3) JSON AST - Create a version of the Painless AST in JSON that is easy to pass over a wire. - (2) Casting Consistency - Make casts in Painless have symmetry and consistency. (jdconrad) ([Painless] Generate Bridge Methods #36097) ([Painless] Add extensive tests for def to primitive casts #36455) ([Painless] Add def to boxed type casts #36506) ([Painless] Add boxed type to boxed type casts for method/return #36571) ([Painless] Add tests for boxed return types #36747) ([Painless] Casting Tests for Object and Number #36804) ([Painless] Add String Casting Tests #36945)
- (3) Dynamic Map Access - Create a utility method to allow maps to be accessed across multiple levels using a String with a dot delimiter from params. (stu-elastic) (Add painless method getByPath, get value from nested collections with dotted path (#43170) #43606)
- (3) Read Only Variables - Allow variables passed into Painless to be read-only to allow for more efficient usage.
Metadata
Metadata
Assignees
Labels
:Core/Infra/ScriptingScripting abstractions, Painless, and MustacheScripting abstractions, Painless, and MustacheMeta