From f530a219ed0de61cda5370c101d7cb9028420e1b Mon Sep 17 00:00:00 2001 From: mkhubaibumer Date: Sat, 10 Feb 2024 03:05:17 +0500 Subject: [PATCH 1/4] [RFCs] This PR proposes RFCs for the following two features: - Localized Layout Options - Template typename passing with inheritance Signed-off-by: mkhubaibumer --- .idea/.gitignore | 5 + .idea/inspectionProfiles/Project_Default.xml | 21 ++++ .idea/modules.xml | 8 ++ .idea/rfcs.iml | 12 +++ .idea/vcs.xml | 6 ++ assets/large-model.png | Bin 0 -> 107592 bytes text/0000_localized_layout_options.md | 67 +++++++++++++ .../0001_template_type_passing_inheritance.md | 90 ++++++++++++++++++ 8 files changed, 209 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/rfcs.iml create mode 100644 .idea/vcs.xml create mode 100644 assets/large-model.png create mode 100644 text/0000_localized_layout_options.md create mode 100644 text/0001_template_type_passing_inheritance.md diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..8786216 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..6efc3e1 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/rfcs.iml b/.idea/rfcs.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/rfcs.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/large-model.png b/assets/large-model.png new file mode 100644 index 0000000000000000000000000000000000000000..782431e71ad91a41b010204254e4ba7c4c22a5f9 GIT binary patch literal 107592 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�w=qZknvrp`q~*+ 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 + +Complete source can be found [here](https://github.com/MagnitionIO/LF_Collaboration/blob/main/complex-view-model/src/cdn_cache_demo.lf) + +# Reference-level explanation +[reference-level-explanation]: #reference-level-explanation + +This can be added in the synthesis options + +# Drawbacks +[drawbacks]: #drawbacks + +Additional `metadata` would be required which would make the diagram an extension of textual representation instead of +it being an equivalence of textual representation + +# Rationale and alternatives +[rationale-and-alternatives]: #rationale-and-alternatives + +- This would enhance the user control over visualization and can help user with the flexibility to make adjustments to the visualization +- A few more options for layouts which user can try and find out which one is more suited for his use-case + +# Prior art +[prior-art]: #prior-art + + +# Unresolved questions +[unresolved-questions]: #unresolved-questions + +- Is adding `metadata` the right approach? +- Would lingua franca benefit from annotation generation based on changes to the view? + +# Future possibilities +[future-possibilities]: #future-possibilities + +This feature would optimise user experience when dealing with large models + diff --git a/text/0001_template_type_passing_inheritance.md b/text/0001_template_type_passing_inheritance.md new file mode 100644 index 0000000..aa8959f --- /dev/null +++ b/text/0001_template_type_passing_inheritance.md @@ -0,0 +1,90 @@ +- Feature Name: `template-type-passing-inheritance` +- Start Date: 2024-02-09 +- RFC PR: [lf-lang/rfcs#0001](https://github.com/lf-lang/rfcs/pull/0001) +- Tracking Issue (s): [lf-lang/lingua-franca#0001](https://github.com/lf-lang/lingua-franca/issues/0001) + +# Abstract +[abstract]: #abstract + +Introduction of Generics in C target has made Lingua-Franca very powerful but as of now the inheritance part of +lingua-franca is not at par. Inheritance in C target with Generics has some apparent flaws especially in template type +passing and template type naming between base and derived reactors + +# Motivation +[motivation]: #motivation + +Currently, the typenames of templated arguments between base reactor and derived reactors need to be same and there +is no way of passing an explicit type to the templated argument(s) of base reactor + +**typename problem** +``` +reactor Base { + // reactor definition +} + +reactor Derived extends Base { + // reactor definition +} +``` +The above lingua-franca code doesn't compile as `reactor Derived extends Base` is not valid syntax +If we change this to `reactor Derived extends Base` and omit the `` argument the code doesn't compile as well + +The only way to fix this problem is if we update the example like this +``` +reactor Base { + // reactor definition +} + +reactor Derived extends Base { + // reactor definition +} +``` + +**explicit type passing** +``` +reactor Base { + // reactor definition +} + +reactor Child1 extends Base { + // reactor definition +} + +reactor Child2 extends Base { + // reactor definition +} +``` +The above lingua-franca code doesn't compile as `extends Base` is not supported yet. However, with the support +for passing typename to `Base` reactor explicit types can also be passed to the parent reactor. This would enable the +user to extend a non-generic reactor from a generic reactor and vice versa + +# Guide-level explanation +[guide-level-explanation]: #guide-level-explanation + +Inheritance in C target is resolved at code generation time but this resolution does not take into account the Generic +type resolution. +With this feature `extends` keyword should be used to resolve the type inferred to the parent reactor and then the +resolution of inheritance should take place + +# Reference-level explanation +[reference-level-explanation]: #reference-level-explanation + +This could be accomplished by resolving generics before resolving inheritance in the C-Code Generator + +# Drawbacks +[drawbacks]: #drawbacks + +- template type passing to the parent reactor might require a syntax level change + +# Rationale and alternatives +[rationale-and-alternatives]: #rationale-and-alternatives + +- Derived reactor should not be bound to the typenames of parent reactors + +# Future possibilities +[future-possibilities]: #future-possibilities + +With this feature the Generics and Inheritance in the C target will be improved and more closer to how it works in +other languages with support of inheritance and generics (C++ for example) + +This would make both features more powerful and complete \ No newline at end of file From 7a6b852d2b9890efd7478a7bb506b674b42694ef Mon Sep 17 00:00:00 2001 From: mkhubaibumer Date: Sat, 10 Feb 2024 03:32:35 +0500 Subject: [PATCH 2/4] update pull ref --- text/0000_localized_layout_options.md | 2 +- text/0001_template_type_passing_inheritance.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/text/0000_localized_layout_options.md b/text/0000_localized_layout_options.md index 7f4a694..9c055bb 100644 --- a/text/0000_localized_layout_options.md +++ b/text/0000_localized_layout_options.md @@ -1,6 +1,6 @@ - Feature Name: `localized-layout-options` - Start Date: 2024-02-09 -- RFC PR: [lf-lang/rfcs#0000](https://github.com/lf-lang/rfcs/pull/0000) +- RFC PR: [lf-lang/rfcs#0004](https://github.com/lf-lang/rfcs/pull/4) - Tracking Issue (s): [lf-lang/lingua-franca#0000](https://github.com/lf-lang/lingua-franca/issues/0000) # Abstract diff --git a/text/0001_template_type_passing_inheritance.md b/text/0001_template_type_passing_inheritance.md index aa8959f..e038a61 100644 --- a/text/0001_template_type_passing_inheritance.md +++ b/text/0001_template_type_passing_inheritance.md @@ -1,6 +1,6 @@ - Feature Name: `template-type-passing-inheritance` - Start Date: 2024-02-09 -- RFC PR: [lf-lang/rfcs#0001](https://github.com/lf-lang/rfcs/pull/0001) +- RFC PR: [lf-lang/rfcs#0004](https://github.com/lf-lang/rfcs/pull/4) - Tracking Issue (s): [lf-lang/lingua-franca#0001](https://github.com/lf-lang/lingua-franca/issues/0001) # Abstract From c905044ec2e16d0fcbe30952a6c7a5ae1a63273d Mon Sep 17 00:00:00 2001 From: mkhubaibumer Date: Fri, 23 Feb 2024 17:30:57 +0500 Subject: [PATCH 3/4] Localized layout options Signed-off-by: mkhubaibumer --- .idea/.gitignore | 5 -- .idea/inspectionProfiles/Project_Default.xml | 21 ----- .idea/modules.xml | 8 -- .idea/rfcs.iml | 12 --- .idea/vcs.xml | 6 -- .../0001_template_type_passing_inheritance.md | 90 ------------------- 6 files changed, 142 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/rfcs.iml delete mode 100644 .idea/vcs.xml delete mode 100644 text/0001_template_type_passing_inheritance.md diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b58b603..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 8786216..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 6efc3e1..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/rfcs.iml b/.idea/rfcs.iml deleted file mode 100644 index 24643cc..0000000 --- a/.idea/rfcs.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/text/0001_template_type_passing_inheritance.md b/text/0001_template_type_passing_inheritance.md deleted file mode 100644 index e038a61..0000000 --- a/text/0001_template_type_passing_inheritance.md +++ /dev/null @@ -1,90 +0,0 @@ -- Feature Name: `template-type-passing-inheritance` -- Start Date: 2024-02-09 -- RFC PR: [lf-lang/rfcs#0004](https://github.com/lf-lang/rfcs/pull/4) -- Tracking Issue (s): [lf-lang/lingua-franca#0001](https://github.com/lf-lang/lingua-franca/issues/0001) - -# Abstract -[abstract]: #abstract - -Introduction of Generics in C target has made Lingua-Franca very powerful but as of now the inheritance part of -lingua-franca is not at par. Inheritance in C target with Generics has some apparent flaws especially in template type -passing and template type naming between base and derived reactors - -# Motivation -[motivation]: #motivation - -Currently, the typenames of templated arguments between base reactor and derived reactors need to be same and there -is no way of passing an explicit type to the templated argument(s) of base reactor - -**typename problem** -``` -reactor Base { - // reactor definition -} - -reactor Derived extends Base { - // reactor definition -} -``` -The above lingua-franca code doesn't compile as `reactor Derived extends Base` is not valid syntax -If we change this to `reactor Derived extends Base` and omit the `` argument the code doesn't compile as well - -The only way to fix this problem is if we update the example like this -``` -reactor Base { - // reactor definition -} - -reactor Derived extends Base { - // reactor definition -} -``` - -**explicit type passing** -``` -reactor Base { - // reactor definition -} - -reactor Child1 extends Base { - // reactor definition -} - -reactor Child2 extends Base { - // reactor definition -} -``` -The above lingua-franca code doesn't compile as `extends Base` is not supported yet. However, with the support -for passing typename to `Base` reactor explicit types can also be passed to the parent reactor. This would enable the -user to extend a non-generic reactor from a generic reactor and vice versa - -# Guide-level explanation -[guide-level-explanation]: #guide-level-explanation - -Inheritance in C target is resolved at code generation time but this resolution does not take into account the Generic -type resolution. -With this feature `extends` keyword should be used to resolve the type inferred to the parent reactor and then the -resolution of inheritance should take place - -# Reference-level explanation -[reference-level-explanation]: #reference-level-explanation - -This could be accomplished by resolving generics before resolving inheritance in the C-Code Generator - -# Drawbacks -[drawbacks]: #drawbacks - -- template type passing to the parent reactor might require a syntax level change - -# Rationale and alternatives -[rationale-and-alternatives]: #rationale-and-alternatives - -- Derived reactor should not be bound to the typenames of parent reactors - -# Future possibilities -[future-possibilities]: #future-possibilities - -With this feature the Generics and Inheritance in the C target will be improved and more closer to how it works in -other languages with support of inheritance and generics (C++ for example) - -This would make both features more powerful and complete \ No newline at end of file From 90ae5f66ec3269d3b3b4d46d50e5c230e771cb8f Mon Sep 17 00:00:00 2001 From: mkhubaibumer Date: Fri, 23 Feb 2024 17:30:57 +0500 Subject: [PATCH 4/4] Localized layout options Signed-off-by: mkhubaibumer --- .gitignore | 1 + .idea/.gitignore | 5 -- .idea/inspectionProfiles/Project_Default.xml | 21 ----- .idea/modules.xml | 8 -- .idea/rfcs.iml | 12 --- .idea/vcs.xml | 6 -- .../0001_template_type_passing_inheritance.md | 90 ------------------- 7 files changed, 1 insertion(+), 142 deletions(-) create mode 100644 .gitignore delete mode 100644 .idea/.gitignore delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/rfcs.iml delete mode 100644 .idea/vcs.xml delete mode 100644 text/0001_template_type_passing_inheritance.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1c2d52b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/* diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b58b603..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 8786216..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 6efc3e1..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/rfcs.iml b/.idea/rfcs.iml deleted file mode 100644 index 24643cc..0000000 --- a/.idea/rfcs.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/text/0001_template_type_passing_inheritance.md b/text/0001_template_type_passing_inheritance.md deleted file mode 100644 index e038a61..0000000 --- a/text/0001_template_type_passing_inheritance.md +++ /dev/null @@ -1,90 +0,0 @@ -- Feature Name: `template-type-passing-inheritance` -- Start Date: 2024-02-09 -- RFC PR: [lf-lang/rfcs#0004](https://github.com/lf-lang/rfcs/pull/4) -- Tracking Issue (s): [lf-lang/lingua-franca#0001](https://github.com/lf-lang/lingua-franca/issues/0001) - -# Abstract -[abstract]: #abstract - -Introduction of Generics in C target has made Lingua-Franca very powerful but as of now the inheritance part of -lingua-franca is not at par. Inheritance in C target with Generics has some apparent flaws especially in template type -passing and template type naming between base and derived reactors - -# Motivation -[motivation]: #motivation - -Currently, the typenames of templated arguments between base reactor and derived reactors need to be same and there -is no way of passing an explicit type to the templated argument(s) of base reactor - -**typename problem** -``` -reactor Base { - // reactor definition -} - -reactor Derived extends Base { - // reactor definition -} -``` -The above lingua-franca code doesn't compile as `reactor Derived extends Base` is not valid syntax -If we change this to `reactor Derived extends Base` and omit the `` argument the code doesn't compile as well - -The only way to fix this problem is if we update the example like this -``` -reactor Base { - // reactor definition -} - -reactor Derived extends Base { - // reactor definition -} -``` - -**explicit type passing** -``` -reactor Base { - // reactor definition -} - -reactor Child1 extends Base { - // reactor definition -} - -reactor Child2 extends Base { - // reactor definition -} -``` -The above lingua-franca code doesn't compile as `extends Base` is not supported yet. However, with the support -for passing typename to `Base` reactor explicit types can also be passed to the parent reactor. This would enable the -user to extend a non-generic reactor from a generic reactor and vice versa - -# Guide-level explanation -[guide-level-explanation]: #guide-level-explanation - -Inheritance in C target is resolved at code generation time but this resolution does not take into account the Generic -type resolution. -With this feature `extends` keyword should be used to resolve the type inferred to the parent reactor and then the -resolution of inheritance should take place - -# Reference-level explanation -[reference-level-explanation]: #reference-level-explanation - -This could be accomplished by resolving generics before resolving inheritance in the C-Code Generator - -# Drawbacks -[drawbacks]: #drawbacks - -- template type passing to the parent reactor might require a syntax level change - -# Rationale and alternatives -[rationale-and-alternatives]: #rationale-and-alternatives - -- Derived reactor should not be bound to the typenames of parent reactors - -# Future possibilities -[future-possibilities]: #future-possibilities - -With this feature the Generics and Inheritance in the C target will be improved and more closer to how it works in -other languages with support of inheritance and generics (C++ for example) - -This would make both features more powerful and complete \ No newline at end of file