Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pdftalknonnamespacefileout [2022/02/23 18:18]
christian [Steps]
pdftalknonnamespacefileout [2022/05/16 18:43] (current)
christian [Porting PDFtalk to non-namespace Smalltalk dialects]
Line 3: Line 3:
 Make the [[start#the_library|core PDFtalk library]] available to non-namespace Smalltalk dialects like Squeak, Pharo and VAST. This does not include the UI (the [[pdftalksnooper|Snooper]]), which needs to be fully rewritten in another dialect (namespaced or not). Make the [[start#the_library|core PDFtalk library]] available to non-namespace Smalltalk dialects like Squeak, Pharo and VAST. This does not include the UI (the [[pdftalksnooper|Snooper]]), which needs to be fully rewritten in another dialect (namespaced or not).
  
-The transformation approach to porting has been successful for [[pdftalk4gemstone|Gemstone]], which has namespaces. Translating all names in namespaces and their references to prefixed global names has not been done yet.+The transformation approach to porting has been successful for [[pdftalk4gemstone|Gemstone]], which has namespaces. Translating all names in namespaces and their references to prefixed global names has not been done at the time. This is the focus of the current work - see the **[[PortingBlog|blog]]** for the current development.
  
 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 12: Line 12:
   * [[SqueakPort|Squeak]]   * [[SqueakPort|Squeak]]
   * [[VASTPort|VA Smalltalk]]   * [[VASTPort|VA Smalltalk]]
 +  * [[GemstonePort|Gemstone]]
 +  * [[PharoPort|Pharo]]
   * (others to come)   * (others to come)
  
 ===== General Approach ===== ===== General Approach =====
  
-The first step is to port the ''Values'' package. This is easy, since no namespaces are involved. +  - [[setupvisualWorks|setup the VisualWorks 8.3]] source image with PDFtalk and the tools
- +
-==== Steps ==== +
- +
-  - Prepare +
-    - [[setupvisualWorks|setup the VisualWorks 8.3]] source image +
-    - 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 ''Values'' package. This is easy, since no namespaces are involved.   - Port the ''Values'' package. This is easy, since no namespaces are involved.
   - 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 44: 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 ==== 
  
-  * **PostScript** - PostScript Interpreter without graphics for CMaps and type1 fonts. 83 classes, 42 values, 251 tests. 
-  * **PDFtalk** - Core library. 396 classes, 116 values, 288 tests and 3 namespaces. 
-    * **PDFtalk.Fonts** - Type1 fonts. 32 classes, 5 values, 25 tests. 
-      * **PDFtalk.Fonts.OpenType** - OpenType(PS) implementation. 64 classes, 19 values, 6 tests. 
-  * **UI** - not to be ported 
-Not included yet 
-  * **RDF** - RDF implementation for meta data. 37 classes, 15 values, 371 tests. 
-    * **PDFtalk.XMP** - Extensible Metadata Platform. 17 classes, 12 values, 17 tests. 
  
-=== Namespace to prefix mapping ===+===== How you can help =====
  
-All classes and globals from a namespace will be renamed with a prefix+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.
  
-  * PDFtalk => PtPDFt, ...? +For thiswe need help
-  * PostScript => PS, ...? +==== Coding ==== 
-  * PDFtalk.Fonts => PtFont, ...? + 
-  PDFtalk.Fonts.OpenType => PtOT, ...+If you have [[setupvisualWorks|VisualWorks with version 8.3]] or lateryou can help by adding transformations for specific packages or by improving the transformation machinery
-  RDF => RDF, ...? + 
-  PDFtalk.XMP =PtXMP, ...?+Port the **[Values Tools]** and [Values Tools Testing] packagesThese packages contain the code for generating new value classesIf 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 <mail@pdftalk.defor an account if you like to contribute). 
 + 
 +Test it, use it, give **feedback**, ask questions… We are very interested in feedback on the code, documentation, the porting approach, the wiki contentsWith your input the code can only improve.
  
 ===== Discussion ===== ===== Discussion =====
 +
 +==== Namespaces ====
 +
 +[[namespaces|--> Namespaces]]
  
 ==== Naming issues ==== ==== Naming issues ====
  • pdftalknonnamespacefileout.1645636683.txt.gz
  • Last modified: 2022/02/23 18:18
  • by christian