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 17:53]
christian [Porting PDFtalk to non-namespace Smalltalk dialects]
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 
-===== Workflow =====+  - Port the ''Values'' package. This is easy, since no namespaces are involved. 
 +  - Port the PDFtalk packages in order (you can skip PostScript until later) 
 + 
 +==== 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 30: 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.+
  
-==== Values porting log ====+Then the port should be finished.
  
-In a [[valuesportinglog|detailed log]] I try to describe how I am porting the Values package to Squeak. This should serve as an example for your own porting project.  
  
-==== Namespaces ==== 
  
-  * **PostScript** - PostScript Interpreter without graphics for CMaps and type1 fonts. 83 classes, 42 values, 251 tests. +===== How you can help =====
-  * **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 ===+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.
  
-All classes and globals from a namespace will be renamed with a prefix+For this, we need help. 
 +==== Coding ====
  
-  * PDFtalk => PtPDFt, ...? +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
-  PostScript => PS, ...? + 
-  * PDFtalk.Fonts => PtFont, ...? +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
-  PDFtalk.Fonts.OpenType =PtOT, ...? + 
-  RDF => RDF, ...? +Add other source formats (f.ex**tonel**) as backend for the transformations (besides the chunk format)
-  * PDFtalk.XMP => PtXMP, ...?+ 
 +==== 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 ===== 
 + 
 +==== Namespaces ==== 
 + 
 +[[namespaces|--Namespaces]]
  
 ==== Naming issues ==== ==== Naming issues ====
Line 81: Line 88:
   * maybe not only namespaces need to be mapped to class prefixes but also bundle/package (paths) need to be mapped to class names and/or prefixes to create those extra helper classes   * maybe not only namespaces need to be mapped to class prefixes but also bundle/package (paths) need to be mapped to class names and/or prefixes to create those extra helper classes
  
- 
-==== Steps ==== 
- 
-  - [[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 **Values**. No namespaces. 
-  - Port the PDFtalk packages in order (you can skip PostScript until later) 
  
  
  • pdftalknonnamespacefileout.1645635187.txt.gz
  • Last modified: 2022/02/23 17:53
  • by christian