Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pdftalknonnamespacefileout [2022/03/07 11:01] bekki |
pdftalknonnamespacefileout [2022/05/16 18:43] (current) christian [Porting PDFtalk to non-namespace Smalltalk dialects] |
||
---|---|---|---|
Line 3: | Line 3: | ||
Make the [[start# | Make the [[start# | ||
- | The transformation approach to porting has been successful for [[pdftalk4gemstone|Gemstone]], | + | The transformation approach to porting has been successful for [[pdftalk4gemstone|Gemstone]], |
Some information [[aboutPortingToNonNamespacedSmalltalks|about the project]] gives more details of the organisation and structure of the project. | Some information [[aboutPortingToNonNamespacedSmalltalks|about the project]] gives more details of the organisation and structure of the project. | ||
Line 13: | Line 13: | ||
* [[VASTPort|VA Smalltalk]] | * [[VASTPort|VA Smalltalk]] | ||
* [[GemstonePort|Gemstone]] | * [[GemstonePort|Gemstone]] | ||
+ | * [[PharoPort|Pharo]] | ||
* (others to come) | * (others to come) | ||
===== General Approach ===== | ===== General Approach ===== | ||
- | | + | - [[setupvisualWorks|setup the VisualWorks 8.3]] source image with PDFtalk |
- | | + | |
- | - decide on target dialect version | + | |
- | - decide on output format (Chunk?) | + | |
- | - How to handle meta data (version, author, copyright, structure...) | + | |
- | - How to handle pre- and post-load actions | + | |
- | - Add some tests | + | |
- Port the '' | - Port the '' | ||
- Port the PDFtalk packages in order (you can skip PostScript until later) | - Port the PDFtalk packages in order (you can skip PostScript until later) | ||
- | ===== Workflow | + | ==== Workflow ==== |
The workflow for the dialect specific engineer is straight forward: | The workflow for the dialect specific engineer is straight forward: | ||
- | - generate the source for the target dialect from VisualWorks with the defined code transformations | + | - **generate the source** for the target dialect from VisualWorks with the defined code transformations. Fix problems so that there are no errors or warnings. |
- | - file in the source into the target dialect | + | - **file in the source** into the target dialect. Fix problems so that there are no errors or warnings. |
- | - run the tests | + | - **file in the tests** into the target dialect. Fix problems so that there are no errors or warnings. |
- | - find a problem | + | - **run the tests** |
- | - fix the problem | + | - **fix the problems** |
- by changing code transformations | - by changing code transformations | ||
- by implementing missing functionality | - by implementing missing functionality | ||
Line 40: | Line 35: | ||
- change the tests to make them dialect specific | - change the tests to make them dialect specific | ||
- change the original source in VisualWorks | - change the original source in VisualWorks | ||
- | - Repeat until all tests are passing | + | - **Repeat** until all tests are passing |
- | then the port should be finished. | + | |
+ | Then the port should be finished. | ||
- | ==== Namespaces ==== | ||
- | [[namespaces|--> | ||
+ | ===== How you can help ===== | ||
+ | |||
+ | This project is an experiment in somewhat new territory. The goal is to port software from one Smalltalk dialect to another with a declarative approach. This has been done only once for PDFtalk from VW to Gemstone. Now the port is attempted for many non-namespaced Smalltalks at once. The idioms and ways on how to do things are yet to be found and invented. | ||
+ | |||
+ | For this, we need help. | ||
+ | ==== Coding ==== | ||
+ | |||
+ | If you have [[setupvisualWorks|VisualWorks with version 8.3]] or later, you can help by adding transformations for specific packages or by improving the transformation machinery. | ||
+ | |||
+ | Port the **[Values Tools]** and [Values Tools Testing] packages. These packages contain the code for generating new value classes. If you want to create your own Value classes you need this. | ||
+ | |||
+ | Add other source formats (f.ex. **tonel**) as backend for the transformations (besides the chunk format). | ||
+ | |||
+ | ==== Feedback ==== | ||
+ | |||
+ | **Participate** here on the wiki (ask me < | ||
+ | |||
+ | Test it, use it, give **feedback**, | ||
===== Discussion ===== | ===== Discussion ===== | ||
+ | |||
+ | ==== Namespaces ==== | ||
+ | |||
+ | [[namespaces|--> | ||
==== Naming issues ==== | ==== Naming issues ==== |