Jump to content

Source-to-source compiler

From Wikipedia, the free encyclopedia

Asource-to-source translator,source-to-source compiler(S2S compiler),transcompiler,ortranspiler[1][2][3]is a type oftranslatorthat takes thesource codeof a program written in aprogramming languageas its input and produces an equivalent source code in the same or a different programming language. A source-to-source translator converts between programming languages that operate at approximately the same level ofabstraction,while a traditionalcompilertranslates from ahigher level programming languageto alower level programming language.For example, a source-to-source translator may perform a translation of a program fromPythontoJavaScript,while a traditional compiler translates from a language likeCtoassemblyorJavatobytecode.[4]Anautomatic parallelizingcompiler will frequently take in a high level language program as an input and then transform the code and annotate it with parallel code annotations (e.g.,OpenMP) or language constructs (e.g.Fortran'sforallstatements).[2][5]

Another purpose of source-to-source-compiling is translating legacy code to use the next version of the underlying programming language or an API that breaks backward compatibility. It will perform automaticcode refactoringwhich is useful when the programs to refactor are outside the control of the original implementer (for example, converting programs from Python 2 to Python 3, or converting programs from an old API to the new API) or when the size of the program makes it impractical or time-consuming to refactor it by hand.

Transcompilers may either keep translated code structure as close to the source code as possible to ease development anddebuggingof the original source code or may change the structure of the original code so much that the translated code does not look like the source code.[6]There are also debugging utilities that map the transcompiled source code back to the original code; for example, theJavaScriptSource Map standard[citation needed]allows mapping of the JavaScript code executed by aweb browserback to the original source when the JavaScript code was, for example, minified or produced by a transcompiled-to-JavaScript language.[citation needed]

Examples includeClosure Compiler,CoffeeScript,Dart,Haxe,Opal,TypeScriptandEmscripten.[7]

Assembly language translators[edit]

So calledAssembly language translatorsare a class of source-to-source translators converting code from oneassembly languageinto another, including (but not limited to) across different processor families andsystem platforms.

Intel CONV86[edit]

Intelmarketed their 16-bit processor8086to besource compatibleto the8080,an 8-bit processor.[8]To support this, Intel had anISIS-II-based translator from 8080 to 8086 source code named CONV86[9][10][11][12](also referred to as CONV-86[13]and CONVERT 86[14][15]) available toOEMcustomers since 1978, possibly the earliest program of this kind.[nb 1]It supported multiple levels of translation and ran at 2 MHz on an Intel Microprocessor Development SystemMDS-800with 8-inchfloppy drives.According to user reports, it did not work very reliably.[16][17]

SCP TRANS86[edit]

Seattle Computer Products(SCP) offered TRANS86.COM,[15][18][19]written byTim Patersonin 1980 while developing86-DOS.[20][21][22]The utility could translate Intel 8080 andZilogZ80assembly source code (with Zilog/Mostekmnemonics) into.ASM source code for the Intel 8086 (in a format only compatible with SCP'scross-assemblerASM86 forCP/M-80), but supported only a subset ofopcodes,registers and modes, and often still required significant manual correction and rework afterwards.[23][20]Also, performing only a meretransliteration,[14][18][9][10]the brute-forcesingle-pass translatordid not carry out any register and jump optimizations.[24][25]It took about 24 KB of RAM.[15]The SCP version 1 of TRANS86.COM ran on Z80-based systems.[15][18]Once 86-DOS was running, Paterson, in aself-hosting-inspired approach, utilized TRANS86 to convert itself into a program running under 86-DOS.[22][18]Numbered version 2, this was named TRANS.COM instead.[18][25][24][26][27]Later in 1982, the translator was apparently also available fromMicrosoft.[15][28]

Sorcim TRANS86[edit]

Also named TRANS86,Sorcimoffered an 8080 to 8086 translator as well since December 1980.[29][14]Like SCP's program it was designed to port CP/M-80 application code (in ASM, MAC, RMAC or ACT80 assembly format) toMS-DOS(in a format compatible with ACT86).[29][15][30][31]In ACT80 format it also supported a few Z80 mnemonics. The translation occurred on an instruction-by-instruction basis with some optimization applied to conditional jumps. The program ran under CP/M-80,MP/M-80andCromemco DOSwith a minimum of 24 KB of RAM, and had no restrictions on the source file size.[15][32]

Digital Research XLT86[edit]

Much more sophisticated and the first to introduceoptimizing compilertechnologies into the source translation process wasDigital Research's XLT86 1.0 in September 1981. XLT86 1.1 was available by April 1982.[33]The program was written byGary Kildall[14][34][35][36]and translated.ASM source code for the Intel 8080 processor (in a format compatible with ASM, MAC or RMAC assemblers) into.A86source code for the 8086 (compatible with ASM86). Usingglobal data flow analysison 8080 register usage,[37][14][38][39]the five-phasemulti-passtranslator would also optimize the output for code size and take care of calling conventions (CP/M-80BDOScalls were mapped into BDOS calls forCP/M-86), so that CP/M-80 and MP/M-80 programs could be ported to the CP/M-86 andMP/M-86platforms automatically. XLT86.COM itself was written inPL/I-80for CP/M-80 platforms.[40][15][33][41]The program occupied 30 KB of RAM for itself plus additional memory for theprogram graph.On a 64 KB memory system, the maximum source file size supported was about 6 KB,[40][15][42][33]so that larger files had to be broken down accordingly before translation.[15][33]Alternatively, XLT86 was also available forDECVAX/VMS.[15][33]Although XLT86's input and output worked on source-code level, the translator's in-memory representation of the program and the applied code optimizing technologies set the foundation tobinary recompilation.[43][44][45]

Others[edit]

2500 AD Software offered an 8080 to 8086 source-code translator as part of their XASM suite for CP/M-80 machines with Z80 as well as forZilog ZEUSandOlivetti PCOSsystems.[46]

Since 1979, Zilog offered a Z80 toZ8000translator as part of their PDS 8000 development system.[47][48][49][50][51][17]Advanced Micro Computers(AMC)[51][17]and 2500 AD Software offered Z80 to Z8000 translators as well.[46]The latter was named TRANS[52][53]and was available for Z80 CP/M, CP/M-86, MS-DOS and PCOS.[46]

The Z88DK development kit provides a Z80 toi486source code translator targetingnasmnamed "to86.awk", written in 2008 by Stefano Bodrato.[54]It is in turn based on an 8080 to Z80 converter written in 2003 by Douglas Beattie, Jr., named "toz80.awk".[54]

In 2021, Brian Callahan wrote an 8080 CP/M 2.2 to MS-DOS source code translator targetingnasmnamed 8088ify.[55]

Programming language implementations[edit]

The first implementations of some programming languages started as transcompilers, and the default implementation for some of those languages are still transcompilers. In addition to the table below, aCoffeeScriptmaintainer provides a list of languages that compile to JavaScript.[56]

List of transcompilers[4]
Name Source language Target language Comments
Babel ES6+(JS) ES5
Cerberus X Cerberus JavaScript,Java,C++,C#
Cfront C++ C
ClojureScript Clojure JavaScript
Dafny Dafny C#,JS,Java,C++,Go,Python
Dart Dart JavaScript
h5[57] C# JavaScript
Haxe Haxe ActionScript 3,JavaScript, Java, C++, C#,PHP,Python,Lua
HipHopfor PHP (HPHPc) PHP C++
J2ObjC[58] Java Objective-C
JSweet[59] Java TypeScript
Maia[60] Maia Verilog
NACA COBOL,Java COBOL, Java
mrustc Rust C Experimental compiler that is able to bootstrap the official rust compiler (rustc)
Nim Nim C, C++, JavaScript
ReScript OCaml JavaScript
Swiftify[61] Objective-C Swift
Vala Vala C
Fable F# JavaScript
Fable Python F# Python

Porting a codebase[edit]

When developers want to switch to a different language while retaining most of an existing codebase, it might be better to use a transcompiler compared to rewriting the whole software by hand. Depending on the quality of the transcompiler, the code may or may not need manual intervention in order to work properly. This is different from "transcompiled languages" where the specifications demand that the output source code always works without modification. All transcompilers used to port a codebase will expect manual adjustment of the output source code if there is a need to achieve maximum code quality in terms of readability and platform convention.

Tool Source language Target language Comments
2to3script Python2 Python 3 Even though 2to3 does its best at automating the translation process, further manual corrections are often needed.
Emscripten LLVMbytecode JavaScript This allows running C/C++ codebases in a browser for example
c2go[62] C Go Before the 1.5 release, the Go compiler was written in C. An automatic translator was developed to automatically convert the compiler codebase from C into Go.[63][64]Since Go 1.5, the "compiler and runtime are now implemented in Go and assembler, without C".
C2Rust[65] C Rust C2Rust takes C code as input and outputsunsafeRust code, focusing on preserving compatibility with the original codebase. Several documented limitations exist for this process. Converting the resulting code to safe and idiomatic Rust code is a manual effort post translation, although an automated tool exists to ease this task.[65]
Google Web Toolkit Javaprogram that uses a specificAPI JavaScript The Java code is a little bit constrained compared to normal Java code.
Js_of_ocaml[66]of Ocsigen OCaml JavaScript
J2Eif[67] Java Eiffel The resulting Eiffel code has classes and structures similar to the Java program but following Eiffel syntax and conventions.
C2Eif[68] C Eiffel The resulting Eiffel code has classes and structures that try to be as clean as possible. The tool is complete and relies on embedding the C and assembly code if it cannot translate it properly.
Skip[69] Swift Kotlin Skip is an Xcode plug-in that transpiles a Swift iOS app or library using SwiftUI into equivalent native Kotlin code for Android using Jetpack Compose.
Swiftify[70] Objective-C Swift Swiftify is an online source to source conversion tool from Objective-C into Swift. It assists developers who are migrating all or part of their iOS codebase into Swift. The conversion is aimed primarily at converting the syntax between Objective-C and Swift, and is helped because Apple took efforts to ensure compatibility between Swift and Objective-C runtimes.
Runtime Converter[71] PHP Java The Runtime Converter is an automatic tool which converts PHP source code into Java source code. There is a Java runtime library for certain features of the PHP language, as well as the ability to call into the PHP binary itself using JNI for PHP standard library and extension function calls.

Transcompiler pipelines[edit]

A transcompiler pipeline is what results fromrecursive transcompiling.By stringing together multiple layers of tech, with a transcompile step between each layer, technology can be repeatedly transformed, effectively creating a distributedlanguage independent specification.

XSLTis a general-purpose transform tool that can be used between many different technologies, to create such aderivative codepipeline.

Recursive transcompiling[edit]

Recursive transcompilation(orrecursive transpiling) is the process of applying the notion of transcompiling recursively, to create a pipeline of transformations (often starting from asingle source of truth) which repeatedly turn one technology into another.

By repeating this process, one can turn A → B → C → D → E → F and then back into A(v2). Some information will be preserved through this pipeline, from A → A(v2), and that information (at an abstract level) demonstrates what each of the components A–F agree on.

In each of the different versions that the transcompiler pipeline produces, that information is preserved. It might take on many different shapes and sizes, but by the time it comes back to A (v2), having been transcompiled six times in the pipeline above, the information returns to its original state.

This information which survives the transform through each format, from A–F–A(v2), is (by definition) derivative content orderivative code.

Recursive transcompilation takes advantage of the fact that transcompilers may either keep translated code as close to the source code as possible to ease development anddebuggingof the original source code, or else they may change the structure of the original code so much, that the translated code does not look like the source code. There are also debugging utilities that map the transcompiled source code back to the original code; for example,JavaScriptsource maps allow mapping of the JavaScript code executed by aweb browserback to the original source in a transcompiled-to-JavaScript language.

See also[edit]

Notes[edit]

  1. ^One commercial program known to have been machine-translated underISIS-IIfrom8080CP/M-80source code to8086CP/M-86usingIntel's CONV86 wasMicroPro'sWordStar 3.0in September 1981.

References[edit]

  1. ^ARC-Softwaresystems (June 1988)."Aus BASIC mach C: B→C Transpiler"[Turn BASIC into C: B→C Transpiler].Amiga-Magazin(Advertisement) (in German). Vol. 1988, no. 6. Esslingen, Germany:Markt & Technik Verlag Aktiengesellschaft.p. 101.ISSN0933-8713.Archivedfrom the original on 2020-02-01.Retrieved2020-01-18.[…] AchtungC- undBasic-Programmierer! […] Jetzt gibt es den B→C TRANSPILER das einzigartige Umwandlungs-Software-System von ARC […] Der B→C TRANSPILER übersetzt lauffähigeAMIGA-Basicprogramme in compilierbaren C-Code. […] Durch Spezialbefehle kann C-Code in Basicprogramme direkt integriert werden. […] Basic-Befehle werden erweitert transpiliert. (HAM-Modus,IFF,usw. werden unterstützt). […] Mit diesem Konzept neuester Generation verbindet der B→C TRANSPILER auf einzigartige Weise die Vorteile eines Interpreters mit denen eines Compilers […][1]
  2. ^abPountain, Dick (December 1989)."Configuring parallel programs, Part 1: The Occam Transpiler, now under development, will make writing software for parallel processing easier".BYTE.Vol. 14, no. 13.McGraw-Hill, Inc.pp. 349–352.ISSN0360-5280.ark:/13960/t34188734.Retrieved2022-01-06.p. 350:[…] The nameTranspileris meant to suggest a combination oftransputerandcompiler,in just the same way thattransputerwas coined fromtransistorandcomputer(i.e., a computer that is also a component). […](NB. Uses the termOccam transpileras a synonym for a source-to-source compiler working as apre-processorthat takes a normalOccamprogram as input and derives a new Occam source code as output with link-to-channel assignments etc. added to it therebyconfiguringit forparallel processingto run as efficient as possible on a network oftransputers.)
  3. ^Sector 7 Software Limited (1993-12-07) [1992-09-22]."Transpiler".Official Gazette of the United States Patent and Trademark Office.Class 9. Vol. 1157 (1 ed.). Bedford, Bedfordshire, UK:U.S. Patent and Trademark Office.p. TM 81. SN 74-316.610.Archivedfrom the original on 2020-02-01.Retrieved2020-01-18.[…] Priority claimed under Sec. 44(D) on United Kingdom Application No. 1495953, filed 1992-03-31 Reg. No. A1495953, dated 1992-03-31, expires 1999-03-31. For computer software and programs (U.S. Cl. 38). First use 1991-08-01, in commerce 1991-08-01.(NB. This company develops products such as VX/BASIC, a BASIC-to-C transpiler forDEC VMS.Despite their claim, theirs is not the first public use of the term transpiler, see i.e.ARC's BASIC-to-C transpilerfor theAmigain 1988 and theOccam Transpilerby Concurrent Technology Systems (CTS) in 1989.)
  4. ^ab"Transpiler".devopedia.org.2017-03-17.Archivedfrom the original on 2019-11-05.Retrieved2019-06-22.
  5. ^"Types of compilers".compilers.net. 1997–2005.Archivedfrom the original on 2019-07-19.Retrieved2010-10-28.
  6. ^Fowler, Martin(2013-02-12)."Transparent Compilation".Archivedfrom the original on 2020-01-01.Retrieved2013-02-13.
  7. ^Epic Games;Mozilla."HTML5 Epic Citadel".
  8. ^Scanlon, Leo J. (1988).8086/8088/80286 assembly language.Brady Books. p.12.ISBN978-0-13-246919-7.[…] The8086is software-compatible with the8080at the assembly-language level. […]
  9. ^abMCS-86 Assembly Language Converter Operating Instructions For ISIS-II Users.A30/379/10K TL. Santa Clara, California, USA:Intel Corporation.March 1979 [1978]. Order No. 9800642A.Retrieved2020-01-18.[2](NB. A newer version of this manual can be foundhere.)
  10. ^abMCS-86 Assembly Language Converter Operating Instructions For ISIS-II Users.A175/280/7.5 FL. Santa Clara, California, USA:Intel Corporation.February 1980 [1978]. Order No. 9800642-02.Retrieved2020-01-18.[3][4](NB. An older version of this manual can be foundhere.)
  11. ^"The 8086/8087/8088 Development Environment".ASM86 Language Reference Manual(PDF).Santa Clara, California, USA:Intel Corporation.November 1983 [September 1981]. pp. 1-1–1-2. Order Number 121703-003.Retrieved2023-11-28.(404 pages)
  12. ^Nelson, Ross P. (January 1989) [1988].The 80386 Book: Assembly Language Programmer's Guide for the 80386.Microsoft Programming Series (1 ed.).Microsoft Press.p. 2.ISBN978-1-55615-138-5.[…] AnInteltranslator program could convert8080assembler programs into8086assembler programs […]
  13. ^The 8086 Family User's Manual.Intel Corporation.October 1979 [1978]. pp. 2-74, 2-92, B-176. Order No. 9800722-03.Retrieved2020-01-18.[…] other programs round out the software development tools available for the8086and8088.[…] CONV-86 can do most of the conversion work required to translate8080/8085assembly language source modules into ASM-86 source modules. […] To facilitate conversion of 8080A/8085A assembly language programs to run on the iSBC 86/12A board CONV-86 is available under theISIS-IIoperating system.[5][6]
  14. ^abcdeFreiberger, Paul(1981-10-19)."Program translators do it literally – and sometimes in context".InfoWorld– News For Microcomputer Users.Special section: Computer compatibility. Vol. 3, no. 22.Popular Computing, Inc.p. 19.ISSN0199-6649.Archivedfrom the original on 2020-02-01.Retrieved2020-01-15.[…] "Unless you have a translating scheme that takes account of the peculiar idiosyncrasies of the target microprocessor, there is no way that an automatic translator can work," explains Daniel Davis, a programmer withDigital Research."You'll end up with directtransliterations."[…] In spite of all these limitations, progress has been made recently in the development of translators. Most notably, Digital Research has introduced its eight- to 16-bit assembly code translator. Based on research performed by Digital Research presidentGary Kildall,the XLT86 appears to offer advances over previously available software translator technology. LikeSorcim's Trans andIntel's Convert 86, Kildall's package translates assembly-language code from an8080microprocessor to an8086.However, Kildall has applied aglobal flow analysistechnique that takes into account some of the major drawbacks of other translators. The procedure analyzes the register and flag usage in sections of 8080 code in order to eliminate nonessential code. According to Digital Research programmer Davis, the algorithm Kildall uses allows the translator to consider the context as it translates the program. Until now, one of the major problems with any translator program has been the inability of the software to do much more than transliteration. If Digital Research's new translator actually advances the technology to the point where context can be considered, then more software translators may proliferate in the microcomputer marketplace.
  15. ^abcdefghijkTaylor, Roger; Lemmons, Phil (June 1982)."Upward migration – Part 1: Translators – Using translation programs to move CP/M-86 programs to CP/M and MS-DOS"[Using translation programs to move CP/M programs to CP/M-86 and MS-DOS](PDF).BYTE.Vol. 7, no. 6.BYTE Publications Inc.pp. 321–322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344.ISSN0360-5280.CODENBYTEDJ.Archived(PDF)from the original on 2020-01-16.Retrieved2020-01-15.[…]Digital Research's XLT86 takes standard8080source code in a format compatible with ASM, MAC, or RMAC assemblers and converts the 8080 source code to8086source code in a format compatible with ASM86 operating under eitherCP/M-80orCP/M-86.Since XLT86 is written inPL/I-80,the translator can run either stand-alone under CP/M-80 or forcross developmentunder VAX/VMS. It produces optimized 8086 code in a five-phase,multipassprocess, doingglobal data-flow analysisto determine optimal register usage. Although macro definitions are not supported, conditional-assembly directives are […] if you want macro expansion, you can use a pass through MAC or RMAC to produce a PRN file that can be edited […] to produce an expanded source file for input acceptable to XLT86. XLT86 does not recognizeZ80instructions. XLT86 passes repeat loops through to the 8086 source code. XLT86 analyzes the source program in its entirety, determining theblock structureand the register/flag usage. Working from this information, it translates the code to 8086 assembler code in an optimized way. The decision algorithm for each instruction type is given in […] the manual […] Register mapping generally follows […] with a loose relationship between the 8086AXand the 8080PSW;the exact relationship is determined from register usage attranslate time.Manyruntimeoptions are available to control the translation process, both on the command line and embedded in the 8080 source text. […] XLT86 is a sophisticated program that does a reasonable job of optimizing the translation of 8080 source code to 8086 source code.BDOScalls from CP/M-80 are mapped into BDOS calls that are compatible with CP/M-86. XLT86 has special features for handling translation of conditional JMP and CALL instructions in 8080 source code. In the 8080 instructions, JMP and CALL instructions are capable of reaching any address within the 64K-byte region. The 8086 conditional JMP instructions can reach only 128 bytes on either side of theIP[…] register. XLT86 examines the target of the conditional JMP. If the target cannot be reached, XLT86 changes the sense of the conditional JMP and skips over a long JMP to the target address. Since there are no conditional CALL or RET instructions in the 8086, the sense of the condition is changed and a short conditional JMP is performed to skip over an unconditional CALL or RET. […] the segment registers allow for separation of code and data regions. […] XLT86 examines an expression and determines the proper segment for the particular instruction. […][7][8][9][10][11][12][13][14][15][16][17][18][19][20](13 pages)
  16. ^Guzis, Charles "Chuck" P. (2013-02-24)."Re: What if IBM didn't choose the Intel CPU!".Vintage Computer Forum.Genre: Others.Archivedfrom the original on 2020-01-16.Retrieved2020-01-15.[…] The original8086assembler ran on an8080-equipped MDS-80 dev system. One of the first products was a 8080 to 8086 source level translator. I recall that the speed of translation was phenomenally slow. […] our sales guy offered to run a conversion and verification test at the local sales office […] We […] started the job on theISIS-IIMDS 200 series there--they even had a hard disk, which was an outrageously expensive option for an MDS […] still crunching when we left for the night. It still wasn't done the next morning […] About 2 weeks later, after theIntelsoftware guys had a look at the translator, Ed returned with the translated program. It was about 50% larger in size than the original8085version, which sort of went counter to Intel's claims for the translator. […]
  17. ^abcGuzis, Charles "Chuck" P. (2016-12-31) [2016-12-30]."Re: DOS code in CP/M? Revisited…".Vintage Computer Forum.Genre: CP/M and MP/M.Archivedfrom the original on 2020-01-16.Retrieved2020-01-15.[…]Intelhad an ISIS-hosted translator from8080-to-8086code. I can remember spending a very frustrating day at the local Intel sales office with a sample bit of 8080 code--a basicBCDfloating-point package for the 8080 and waiting for hours for the translator to finish its work--and going home disappointed. About a week later, I received a call that they'd finally figured out the bugs and I could pick up my translated program. Said program was more than half-again as large as the original in terms of object bytes. I was a bit skeptical of the Intel claim back then that the 8086 code was far more compact than its 8080 counterpart. And the blasted thing didn't work anyway when it was put to the test. […] There were other 80-to-86 translators forCP/M.I recall thatSorcimhad one.AMChad aZ80-to-Z8000translator as well. […] The [Intel] translator had several levels of translation […] there was the "literal", preserving detailed operation […] it wasISIS-II,running on an MDS-800, at, what, 2 MHz with 8 "floppies. […]
  18. ^abcde"Microsoft Macro Assembler (MASM) Unofficial Changelist".bytepointer.2018-08-21 [2016-09-08].Archivedfrom the original on 2019-07-17.Retrieved2020-01-18.[…]Tim Paterson[…] had the following to say about his8086Assembler he wrote while atSCP:"The 8086 assembler I wrote originally was inZ80assembly language and ran underCP/M.I believe it was distributed with the SCP 8086 CPU card as ASM86. I also wrote a translator that converted Z80 source code to inefficient but workable 8086 source code (Intelpromoted this idea with apublished translation table). This was called TRANS86 and was also written in Z80 assembly for CP/M. OnceDOSwas working, I applied the translator to ASM86 (and to itself) to create 8086 versions that ran under DOS. I do not have the change history in front of me […], but I believe that versions >= 2 marked the translated (DOS) version. If any history shows version numbers < 2, that was the CP/M version. "[…]
  19. ^Paterson, Tim(June 1983)."An Inside Look at MS-DOS – The design decisions behind the popular operating system – The history of and design decisions behind MS-DOS. how it works, and where it's going".BYTE.16-bit Designs. Vol. 8, no. 6.McGraw-Hill, Inc.pp. 230–252.ISSN0360-5280.CODENBYTEDJ.Archivedfrom the original on 2017-03-17.Retrieved2020-01-23.[…]MS-DOSDesign Criteria […] The primary design requirement of MS-DOS wasCP/M-80translation compatibility,meaning that, if an8080orZ80program for CP/M were translated for the8086according toIntel'spublished rules,that program would execute properly under MS-DOS. Making CP/M-80 translation compatibility a requirement served to promote rapid development of 8086 software, which, naturally,Seattle Computerwas interested in. There was partial success: those software developers who chose to translate their CP/M-80 programs found that they did indeed run under MS-DOS, often on the first try. Unfortunately, many of the software developers Seattle Computer talked to in the earlier days preferred to simply ignore MS-DOS. Until theIBM Personal Computerwas announced, these developers felt thatCP/M-86would be the operating system of 8086/8088 computers. […][21][22]
  20. ^abSeattle Computer Products(August 1980)."86-DOS – 8086 OPERATING SYSTEM - $95".BYTE(Advertisement). Vol. 5, no. 8.BYTE Publications Inc.p. 173.ISSN0360-5280.CODENBYTEDJ.Archivedfrom the original on 2017-04-05.Retrieved2013-08-18.[…] 1. ReadZ80source code file written inCP/Mformat and convert to86-DOSformat. 2. Translator program translates Z80 source code to8086source code. 3. Resident assembler assembles the translated 8086 source code to 8086object code.4. Minor hand correction and optimization. (A recent 19K Z80 program translation took us about four hours to fix up. Even without optimization, it ran twice as fast as the original! […])[23]
  21. ^Paterson, Tim(1994-10-03)."The Origins of DOS: DOS Creator Gives His View of Relationship Between CP/M, MS-DOS"(PDF).Microprocessor Report.8(13).MicroDesign Resources(MDR).ISSN0899-9341.Archived fromthe original(PDF)on 2012-05-31.[…] To get major software developers to port their products from the8080/Z80to the8086,I decided we had to make it as easy as possible. I had already written a Z80-to-8086 source code translator (hosted on the 8080 andCP/M). My plan was that running an 8080 CP/M program through the translator would be the only work required by software developers to port the program to the 8086. In other words, the interface used by applications to request operating system services would be exactly the same as CP/M's after applying thetranslation rules.[…]
  22. ^abPaterson, Tim(2007-09-30)."Design of DOS".DosMan Drivel.Archived fromthe originalon 2013-01-20.Retrieved2011-07-04.[…]CP/MTranslation Compatibility […] ForDOSto succeed, it would need useful applications (like word processing) to be written for it. I was concerned thatSCPmight have trouble persuading authors of application software to put in the effort to create a DOS version of their programs. Few people had bought SCP's 16-bit computer, so the installed base was small. Without the applications, there wouldn't be many users, and without the users, there wouldn't be many applications. […] My hope was that by making it as easy as possible to port existing 8-bit applications to our 16-bit computer, we would get more rogrammers to take the plunge. And it seemed to me that CP/M translation compatibility was what would make the job as easy as possible.Intelhaddefined rules for translating8-bit programs into 16-bit programs; CP/M translation compatibility means that when a program's request to CP/M went through the translation, it would become an equivalent request to DOS. […] So I made CP/M translation compatibility a fundamental design goal. This required me to create a very specific Application Program Interface that implemented the translation compatibility. I did not consider this the primary API – there was, in fact, another API more suited to the 16-bit world and that had more capabilities. Both APIs used CP/M-defined constructs (such as the "File Control Block"); the compatibility API had to, and I didn't see a reason to define something different for the primary API. […] I myself took advantage of translation compatibility. The development tools I had written, such as the assembler, were originally 8-bit programs that ran under CP/M (CDOS). I put them through the translator and came up with 16-bit programs that ran under DOS. These translated tools were included with DOS when shipped by SCP. But I don't think anyone else ever took advantage of this process. […]
  23. ^"Z80 To 8086 Translator".Z80/8086 Cross Assembler Release 1(PDF).Revision A (Preliminary ed.). Seattle, Washington, USA:Seattle Computer Products.pp. 20–21.Retrieved2020-01-18.[…] TheSeattle Computer ProductsZ80to8086Translator runs on the Z80 underCP/M.It accepts as input a Z80 source file written usingZilog/Mostekmnemonics and converts it to an 8086 source file in a format acceptable to our 8086 Cross Assembler. To translate a file, simply type TRANS86 <filename>.<ext>. Regardless of the original extension, the output file will be named <filename>.A86 and will appear on the same drive as the input file. A file named TRNTEST.Z80 is included to demonstrate the translator. The entire Z80 assembly language is not translated. […][24]
  24. ^ab86-DOS – Disk Operating System for the 8086. User's manual(PDF).Version 0.3 (Preliminary ed.). Seattle, Washington, USA:Seattle Computer Products.1980.Archived(PDF)from the original on 2019-07-14.Retrieved2020-02-01.
  25. ^abPaterson, Tim(2013-12-19) [1982-07-01]."Microsoft DOS V1.1 and V2.0: Z80 to 8086 Translator version 2.21 /msdos/v11source/TRANS.ASM".Computer History Museum,Microsoft.Archivedfrom the original on 2019-11-12.Retrieved2014-03-25.[25](NB. While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually isSCP MS-DOS 1.25andTeleVideo PC DOS 2.11.)
  26. ^SCP 86-DOS – Single-User Disk Operating System for the 8086(Preliminary ed.). Seattle, Washington, USA:Seattle Computer Products.1980.Retrieved2020-01-18.[…] The source code translator can translate mostZ80source code into8086source code acceptable to the assembler after minor manual correction. This provides a relatively quick and easy way to transport programs between the processors. […] TRANS file […] The Z80-to-8086 Source Code Translator, called by this command, is essentially identical to our version that runs on the Z80, which is described in the back of the Assembler manual. The only differences: 1. The Translator is called TRANS, not TRANS86, and it runs on the 8086 under86-DOS,not on the Z80 underCP/M.2. The extension of the output file is "ASM", not "A86". […][26]
  27. ^Z80 To 8086 Translator(PDF).Seattle Computer Products.pp. TRANS-1–TRANS-2.Retrieved2020-01-19.(23 pages)
  28. ^Hughes, David B. (November 1982)."CP/M-86 And MS-DOS: A Comparative Analysis".PC Magazine.Operating Systems. Vol. 1, no. 7.Software Communications, Inc.pp. 181–182, 187–190 [189].Archivedfrom the original on 2020-02-10.Retrieved2020-02-10.[…] An impressive and useful array of software development utilities is a standard feature ofMS-DOS.A program that translates8080orZ80code into8086source code, a linker, and a library runtime combine with a powerful assembler to give the programmer everything needed to take full advantage of the PC's 16-bit processor. The MS-DOS translation program allows the user to translate code developed underCP/M-80orSB-80[…] 8-bit operating system […] toMS-DOS 1.2or2.0.Some modification beyond simple translation may be necessary to get the programs to run on 16-bit systems, so I suggest that this tool be used primarily by a technically trained user. […]
  29. ^abGaretz, Mark (1980-12-22)."According to Garetz…".InfoWorld– News For Microcomputer Users.Vol. 2, no. 23.Popular Computing, Inc.p. 12.ISSN0199-6649.Archivedfrom the original on 2020-02-01.Retrieved2020-01-18.[…] Last week was the semi-annualCalifornia Computer Swap Meet.This event is organized by John Craig […]Sorcim[…] was debuting […] new products at the show […] Their other product was TRANS-86. TRANS-86 will take anyCP/Mcompatible8080/8085/Z-80source code file and translate it into8086code. You can then assemble the new file with ACT-86. […]
  30. ^Blumenfeld, Dan (1982-12-04)."Z80 to 8086 translator".Newsgroup:fa.info-cpm.Archivedfrom the original on 2020-01-16.Retrieved2020-01-15.[27]
  31. ^"CompuPro".PC: The Independent Guide To IBM Computers(Advertisement). Vol. 1, no. 1.Software Communications, Inc.February–March 1982. pp. 70–71. Premiere/Charter issue.Retrieved2020-01-23.[…] WHY? FLEXIBILITY.CompuPro's 85/88 CPU runs CP/M 80, 86, MP/M II and MP/M 86. We offer WORDSTAR dBASE II SUPERCALC a host of languages, 8080 to 8088 translators and more! COMPATIBILITY. Our systems can use CP/M 2.2 utilities to write programs for the IBM PC. You simply create 8088 source (either write it with your favorite CP/M 80 editor or translate it withSorcim's TRANS 86), cross-assemble your source (with Sorcim's ACT86), link your hex file (with CP/M 80's LOAD command), translate it to the IBM PC (with G&G's CPM-IBM program), and run it on your IBM PC! This procedure DOES NOT require MS-DOS! […] WHY? FLEXIBILITY.CompuPro's 85/88 CPU runs CP/M 80 & 86 or MS-DOS. We offer WORDSTAR, dBASE II, TRANS86, XLT86, ACT86, SUPERCALC, CBASIC, MBASIC, MFORTRAN and more! […][28][29]
  32. ^Warren, Jr., Jim C.(July 1982)."Sorcim' Somethin'"(PDF).Silicon Gulch Gazette.Rumors Mongered Here. Vol. 7, no. 30. Woodside, California, USA:Computer Faire.pp. 1, 2, 4, 6, 11, 14, 15 [11].Retrieved2020-01-15.[…]Sorcimjust completed the purchase ofISA.[…] They have also had an 8080-to-8086 translator – Trans-86 – operational for over a year […]
  33. ^abcdeBarry, Tim (1982-04-05)."XLT-86, a CP/M utility program by Digital Research".InfoWorld– The Newsweekly for Microcomputer Users.Software Review. Vol. 4, no. 13.Popular Computing, Inc.pp. 40–41, 53.ISSN0199-6649.Archivedfrom the original on 2020-02-01.Retrieved2020-01-25.[…] XLT-86 1.1 […] XLT-86 is an analytical translator program written inPL/I-80.It reads the entire 8080 source program, assembles it to machine code, analyzes the register, memory and flag utilization, and emits an optimized8086assembly-language program. […] There is also a version of XLT-86 for those of you who have access to aVAX 11/750or11/780.This version can translate much larger programs. It also costs $8000. […] While the translator adds some labels and equates to the source program as part of the translation, all original comments and program labels are passed through intact to the translated program. […] The program translation proceeds in a five-step process. First, the program is scanned and assembled to produce symbol values and locations. Second, the program structure is analyzed and decomposed intobasic blocks.Third, the basic blocks are analyzed to determineprogram flowand resource usage. Forth, theblock structureandregister allocationdata is gathered into a listing for the user. Fifth, the flow information and source program are used to produce the8086source program. […]
  34. ^Kildall, Gary Arlen(1982-04-19).Swaine, Michael;Freiberger, Paul;Markoff, John Gregory(eds.)."Digital Research founder discusses his view of the business".InfoWorld– The Newsweekly for Microcomputer Users.Special section: CP/M. Vol. 4, no. 15.Popular Computing, Inc.pp. 23–24.ISSN0199-6649.Archivedfrom the original on 2020-02-01.Retrieved2020-01-17.[…] Kildall: […] A year and a half ago I was probably spending 75% of my time on the business and 25% on programming. XLT-86 was a product I was working on at that time, and it took me nine months to do it. That would have been a three-month project if I had been able to concentrate on it. […]
  35. ^Kildall, Gary Arlen(June–July 1982).Bunnell, David Hugh;Edlin, Jim (eds.)."Gary Kildall – The Man Who Created CP/M: CP/M's Creator – An Indepth PC-Exclusive Interview with Software Pioneer Gary Kildall".PC Magazine.Operating Systems. Vol. 1, no. 3.Software Communications, Inc.pp. 32–38, 40 [35].Retrieved2020-01-17.[…] PC: What are some of the complexities involved in translating a program from8080to8086form?Kildall:Straight translations at the source program level you can do pretty much mechanically. For example, an 8080 "Add immediate 5" instruction turns into an "Add AL 5" on the 8086 — very straightforward translation of the op codes themselves. The complexity inmechanical translationcomes from situations such as this: The 8080 instruction DAD H takes the HL register and adds DE to it. For the 8086 the equivalent instruction would be something like ADD DX BX, which is fine, no particular problem. You just say the DX register is the same as HL and BX the same as DE. The problem is that the 8086 instruction has a side effect of setting the zero flag, and the 8080 instruction does not. In mechanical translation you end up doing something like saving the flags, restoring the flags, doing some shifts and rotates, and so forth. These add about five or six extra instructions to get the same semantic effect. There are a lot of sequences in 8080 code that produce very strange sequences in 8086 code; they just don't map very well because of flag registers and things of that sort. The way we get software over is a thing called XLT-86. It's been out six months or so. PC: By "better" code do you mean smaller? Kildall: Twenty percent smaller than if you just took every op code and did a straight translation, saving the registers to preserve semantics. PC: How does the size of the translated program compare to the 8080 version? Kildall: If you take an 8080 program, move it over to 86 land and do an XLT-86 translation, you'll find that it is roughly 10 to 20 percent larger. With 16-bit machines it's more difficult to address everything; you get op codes that are a little bit bigger on the average. An interesting phenomenon is that one of the reasons you don't get a tremendous speed increase in the 16-bit world is because you're running more op codes over the data bus. […]
  36. ^Huitt, Robert;Eubanks, Gordon;Rolander, Thomas "Tom" Alan;Laws, David; Michel, Howard E.; Halla, Brian;Wharton, John Harrison;Berg, Brian; Su, Weilian;Kildall, Scott;Kampe, Bill (2014-04-25). Laws, David (ed.)."Legacy of Gary Kildall: The CP/M IEEE Milestone Dedication"(PDF)(Video transscription). Pacific Grove, California, USA:Computer History Museum.CHM Reference number: X7170.2014.Archived(PDF)from the original on 2014-12-27.Retrieved2020-01-19.[…]Rolander:I mentioned earlier thatGaryliked to approach a problem as an architect. […] And he would draw the most beautiful pictures of his data structures. […] And when he finished that […] and was convinced those data structures were now correct, he would go into just an unbelievable manic coding mode. He would just go for as many as 20 hours a day […] he was just gone during these periods of time. On a couple of those occasions, when he'd get something running the first time, which could be in the middle of night. And all you who have written software have seen that, for example, that the first time it comes up on the screen, you've got to tell somebody. My wife Lori will tell you that I had a couple of those calls in the middle of the night,LOGOwas one example, XLT 86 was another, where he got it running the first time, and he had to have somebody see it. So it didn't matter what time it was, he'd call me, I'd have to come over and see it running. […][30][31](33 pages)
  37. ^"XLT86 Reduces Conversion Effort in Assembly Language Program Translation"(PDF).Digital Research News – for Digital Research Users Everywhere.Product Update. Vol. 1, no. 1. Pacific Grove, California, USA:Digital Research, Inc.November 1981. pp. 2, 7. Fourth Quarter.Retrieved2020-01-18.[…] An 8- to 16-bit assembly code translator is now available fromDigital Research.Called XLT86, it is designed to help ease the time-consuming process of convertingCP/Msoftware products from8080- to8086-based microcomputers. XLT86 can be used to translate any assembly language programs that are compatible with Digital Research's ASM, MAC or RMAC assembler format. The XLT86 program translator first reads an 8080 assembly language program and then produces an output file containing 8086 assembly language statements acceptable to the Digital Research ASM-86 assembler. Unlike other 8086 code converters that translate a single 8080 instruction into as many as ten 8086 instructions, XLT86 performs extensivedata flow analysisto determine register usage throughout the original program. The information collected through this analysis is used during program translation to eliminate unnecessary flag save and restore operations. "The resulting 8086 program is both simpler and more compact than equivalent programs produced by other translators," according to Curt Geske, of the Digital Research marketing group. "Furthermore, XLT86 allows OEMs, end users and software vendors to preserve their investment in 8080-based assembly language programs when changing to 16-bit 8086-based computers by reducing the conversion effort." Programs translated by XLT86 run on bothCP/M-86andMP/M-86[…] XLT86 is available immediately. It operates on any 8-bit CP/M orMP/Msystem, or under theVMSoperating-system for use onDigital Equipment CorporationVAXseriesminicomputers.The CP/M version is priced at$150. The VAX version sells for $8,000. […]
  38. ^Kildall, Gary Arlen(1973-10-01)."A Unified Approach to Global Program Optimization"(PDF).Proceedings of the 1st Annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL).POPL '73. Boston, Massachusetts, USA: 194–206.doi:10.1145/512927.512945.hdl:10945/42162.S2CID10219496.Archived(PDF)from the original on 2017-06-29.Retrieved2006-11-20.
  39. ^Kildall, Gary Arlen(May 1972).Global expression optimization during compilation(Ph.D. dissertation). Seattle, Washington, USA:University of Washington,Computer Science Group. Thesis No. 20506, Technical Report No. 72-06-02.
  40. ^abXLT86 – 8080 to 8086 Assembly Language Translator – User's Guide(PDF)(First printing ed.). Pacific Grove, California, USA:Digital Research, Inc.September 1981.archive.org copy.Archived(PDF)from the original on 2016-11-18.Retrieved2016-11-18.
  41. ^"XLT86 for CP/M-80".Digital Research.Archivedfrom the original on 2020-01-16.Retrieved2020-01-18.(NB. This ZIP archive contains theCP/M-80executable XLT86.COM [22 KB] as well as two overlay files XLT00.OVL [8 KB] and XLT01.OVL [9 KB].)
  42. ^Goldfarb, Ben (1982-12-09)."Re: 8080 to 8086 translation".Newsgroup:fa.info-cpm.Archivedfrom the original on 2020-02-01.Retrieved2020-01-18.[…] The XLT86 program occupies approximately 30K bytes of main memory. The remainder of memory, up to the base ofCP/M,stores theprogram graphthat represents the 8086 program being translated […] A 64K CP/M system allows translation of8080programs of up to approximately 6K. […][32][33]
  43. ^Wharton, John Harrison(1994-08-01)."Gary Kildall, industry pioneer, dead at 52: created first microcomputer languages, disk operating systems".Microprocessor Report.8(10).MicroDesign Resources Inc.(MDR).Archivedfrom the original on 2016-11-18.Retrieved2016-11-18.[…] Ironically, many of the techniquesGarypioneered are being rediscovered now, ten years later.AppleandDECare toutingbinary recompilationas a "new" technology for porting existing software to thePowerPCorAlphaarchitecture. Actually, DRI introduced an8080-to-8086binary recompiler in the early 1980s. […]
  44. ^"SPA Award to Dr. Gary A.Kildall: 1995 SPA Lifetime Achievement Award Winner".Software Publishers Association(SPA). 1995-03-13.Archivedfrom the original on 2019-12-21.Retrieved2019-12-21– via digitalresearch.biz.[…]KildallfoundedDigital Research, Inc.(DRI) in 1976, which is now part ofNovell.[…] In the 1980's, DRI introduced abinary recompiler.[…]
  45. ^Swaine, Michael(1997-04-01)."Gary Kildall and Collegial Entrepreneurship".Dr. Dobb's Journal.Archived fromthe originalon 2007-01-24.Retrieved2006-11-20.In March, 1995, theSoftware Publishers Associationposthumously honoredGaryfor his contributions to the computer industry. They listed some of his accomplishments: […] In the 1980s, throughDRI,he introduced abinary recompiler.[…]
  46. ^abc2500 A.D. Software (1984-12-11)."Super assemblers plus the world's largest selection of cross assemblers".PC Magazine(Advertisement). Vol. 3, no. 24. Englewood, Colorado, USA:PC Communications Corp.pp. 166–167.ISSN0745-2500.Archivedfrom the original on 2020-02-01.Retrieved2020-01-24.[…] 8086/88 Assembler With Translator $99.50 Available for MSDOS, PCDOS, or CP/M-86 […] This package also includes […] an 8080 to 8086 source code translator (no limit on program size to translate) […] Z-8000 Cross Development Package $199.50 […] This powerful package includes a Z-80/8080 to Z-8000 Assembly Language Source Code Translator […] The Translators provide Z-8000 source code from the Intel 8080 or Zilog Z-80 source code. The Z-8000 source code used by these packages are in the unique 2500AD syntax using Zilog mnemonics designed to make the transition from Z-80 code writing to Z-8000 easy […] 8086 and Z-8000 XASM includes source code translators […](NB. 8086/88 XASM available for Z-80 CP/M,Zilog System 8000 UNIX,Olivetti M-20PCOS;Z-8000 XASM for Z-80 CP/M, MS-DOS, CP/M-86, Olivetti M-20 PCOS.)
  47. ^"Zilog Unveils Modular Development System".Computerworld– The Newsweekly for the Computer Community.Vol. XIII, no. 34. Cupertino, California, USA:Computerworld, Inc.1979-08-20. p. 46.ISSN0010-4841.Archivedfrom the original on 2020-02-01.Retrieved2020-01-24.[…]Zilog, Inc.has introduced a series of modular and expandable product development systems (PDS) forZ8-,Z80-, andZ8000-based microcomputer designs. All four versions of the PDS 8000 system – models 10, 15, 25, and 30 – have […] A standard feature of each system is a Z8000 software development package, which includes theZDOSIIfile management routine, PLZ/ASM high-level structured assemblers, a Z80/Z8000 translator and a Z8000 L and MACP macroprocessor. […] The models 10 and 25 have the same specifications as the models 15 and 30, respectively. but the 10 and 25 do not include the Z8000 development module. The PDS Model 10 is priced at $10,485; the Model 15 at $11,995; the Model 25 at $20,000; and the Model 35 at $21,500. All four systems are available 30 days after receipt of the order. […]
  48. ^Orlansky, Jesse, ed. (1979).Proceedings 27–29 November 1979 – 1st Interservice/Industry Training Equipment Conference.The Center. p. 413. Technical report NAVTRAEQUIPCEN.Archivedfrom the original on 2020-02-01.Retrieved2020-01-24.[…] Table 1. 16-Bit Microprocessor Characteristics […]Zilog8000 […] Software […] Zilog expects to supportZ8000with translators for PLZ,BASIC,COBOLandFORTRAN.These will permit conversion ofZ80code to Z8000 code, since Z8000 set is superset to Z80. […]
  49. ^PDS 8000 Development System – The integrated approach to systems design(Product Brief).Zilog.January 1980.Retrieved2020-01-24.[…] Z8000 TRANSLATOR: Provides a quick means to convert an existingZ80Assembly Language program toZ8000code and the PLZ/ASM program format. […][34][35]
  50. ^Thomas, Rebecca A.; Yates, Jean L. (1981-05-11)."Books, Boards and Software for The New 16-Bit Processors".InfoWorld– The Newspaper for the Microcomputing Community.Vol. 3, no. 9.Popular Computing, Inc.pp. 42–43.ISSN0199-6649.Archivedfrom the original on 2020-02-01.Retrieved2020-01-24.[…]Digital Researchhas also announced plans for aZ8000version ofCP/M.Application software will be moved to the Z8000 when more development software is available. A commercially available translator fromZ80to Z8000 is needed. […]
  51. ^abGuzis, Charles "Chuck" P. (2009-01-21) [2009-01-17]."Re: CP/M or similar OS for 64K Z8002?".Vintage Computer Forum.Genre: CP/M and MP/M.Archivedfrom the original on 2020-01-16.Retrieved2020-01-15.[…] bothZilogandAMCofferedZ80-to-Z8000translation programs. Like theIntel8080-to-8086translator, it resulted in immediate bloat unless you were willing to hand-optimize the result. Much early MS-DOS code was auto-translated and tweaked 8080 CP/M code. I know that much ofSuperCalcfor the PC was, for example. Early (e.g. 3.3) versions ofWordstarfor DOS probably also were. […] There were Z80-to-Z8000 source-code translators, but it wasn't a straightforward process ( "strict" and "relaxed" modes; sometimes one Z80-to-several Z8000 instructions). The 8086 is much closer to the 8080 than the Z8000 is to the Z80. […]
  52. ^"2500 A.D. Software 8080/Z-80 to Z8000 source code translator v2.06b".2500 A.D. Software, Inc. 1982.Archivedfrom the original on 2020-02-01.Retrieved2020-01-24.[36]
  53. ^"802Z8000.ZIP 2500 A.D. Software 8080/Z-80 to Z8000 source code translator v2.06e".2500 A.D. Software, Inc.Archivedfrom the original on 2020-02-01.Retrieved2020-01-24.[37]
  54. ^abBodrato, Stefano (2008-10-30)."to86.awk source code".GitHub.1.6.Archivedfrom the original on 2022-01-05.Retrieved2022-01-05.
  55. ^Callahan, Brian (2021-10-23) [2021-07-06, 2021-06-06]."Intel 8080 CP/M 2.2 to Intel 8086/8088 MS-DOS assembly language translator".8088ify 1.2.Archivedfrom the original on 2022-03-31.Retrieved2021-11-28.[38][39][40][41]
  56. ^"List of languages that compile to JS".GitHub.Archivedfrom the original on 2020-01-23.Retrieved2018-03-11.
  57. ^theolivenbaum (2021-11-13)."h5 🚀 - C# to JavaScript compiler".GitHub.Retrieved2021-11-14.
  58. ^"J2ObjC".Archivedfrom the original on 2019-10-22.Retrieved2019-10-22.
  59. ^"JSweet".Archivedfrom the original on 2019-12-14.Retrieved2019-12-14.
  60. ^"Maia".Retrieved2020-05-13.
  61. ^"Swiftify".
  62. ^"C->Go translator".GitHub.Archivedfrom the original on 2018-12-07.Retrieved2018-01-11.
  63. ^"Go 1.5 Release Notes".Archivedfrom the original on 2020-02-01.Retrieved2018-01-11.
  64. ^Cox, Russ."Go 1.3+ Compiler Overhaul".Archivedfrom the original on 2020-01-09.Retrieved2018-01-11.
  65. ^ab"C2Rust repository".GitHub.2022-04-15.
  66. ^"Overview".Js_of_ocaml - Reference Manual.Ocsigen. Archived fromthe originalon 2018-12-08.Retrieved2014-10-08.
  67. ^J2Eif Research Page – Chair of Software Engineering.Se.inf.ethz.ch.doi:10.1007/978-3-642-21952-8_4.Archivedfrom the original on 2020-01-01.Retrieved2014-07-08.
  68. ^"C2Eif Research Page – Chair of Software Engineering".Se.inf.ethz.ch.Archivedfrom the original on 2020-01-01.Retrieved2014-07-08.
  69. ^"Skip".Archivedfrom the original on 2024-05-18.Retrieved2024-05-17.
  70. ^"Swiftify Objective-C to Swift Converter".Retrieved2017-11-14.
  71. ^"Runtime Converter".Archivedfrom the original on 2019-07-10.Retrieved2017-11-14.

Further reading[edit]

External links[edit]