DOPPL
Data Oriented Parallel Programming Language

Development Diary
Iteration #10

Covered Concepts:
Target Language for ...
Abstract
This paper stands for Doppl language development iteration #10. In this paper, compilation
specifications of the ...
3. Openness Manifesto
Doppl standard and compilation toolchain is officially decided to be available as open source
and wi...
Upcoming SlideShare
Loading in …5
×

Doppl development iteration #10

270 views

Published on

This will be the final paper hosted under Slideshare. Visit doppl.org to access newest iterations and other relevant information.

Doppl is a new programming language that aims providing a natural syntax for implementing parallel algorithms, designing data structures for shared memory applications and automated message passing among multiple tasks. The name is an abbreviation of `data oriented parallel programming language`.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
270
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Doppl development iteration #10

  1. 1. DOPPL Data Oriented Parallel Programming Language Development Diary Iteration #10 Covered Concepts: Target Language for Compilation, Open Doppl Project Diego PERINI Department of Computer Engineering Istanbul Technical University, Turkey 2013-09-25 1
  2. 2. Abstract This paper stands for Doppl language development iteration #10. In this paper, compilation specifications of the Doppl will be discussed. Open Doppl project and its manifesto is officially declared. 1. Rationale Doppl has been planned to be a cross compiled language since it provided higher level capabilities compared to C like low languages. Already tested and verified memory model of languages like C++, Java and C# stand to be very appropriate decisions as their latest revisions provide great tools to achieve concurrency in a secure and semantically clear way. 2. Cross Compilation To C++11 Introduction paper of Doppl development stated that virtual machines do not provide necessary flexibility to store blocks of data in a data oriented manner. Data oriented programs require direct access to hardware registers and memory in order to fully make use of hardware level caches which is a critically essential feature of Doppl. This requirement has greatly narrowed the set of possible target languages since both Java and C# implementations mostly depend on existence of a virtual machine. C++03 lacked necessary standard libraries to handle concurrency natively which threw the language behind on the concurrency race. Latest accepted revision of C++ is now widely accepted by its community and almost completely supported by leading compilers. It is named as C++11 (C++0x formerly) after its approval by ISO on 12 August 2011. It is decided that newer versions of C++ will not be standardized at a slow pace as previous ones and the language will continue to evolve with a cycle of 3 years for each version. C++14 and C++17 therefore has already started to be discussed and proposals for new features as well as depreciation and replacement requests are being submitted each day. Newly introduced C++11 features can be categorized in two main topics, language features and library features. C++11 comes with new syntax rules to support functional programming, meta programming and move semantics better. It introduces lambda functions, closures, advanced templating techniques and transferable temporaries. These are concepts that could not be achieved previously or they required unusual workarounds in order to be implemented properly. Standard library of C++03 has greatly improved to fully and portably support concurrency, regular expressions, atomic expressions, higher order functions, automatic memory handles, randomization and useful set of containers. Some outdated objects and functions from C++03 has been marked as deprecated and replaced with newer and better counterparts. These new features and abilities granted to C++ is greatly fixed the decision of target language for Doppl compilation. It is now officially declared that Doppl programs will be compiled into modern C++11. Compiled Doppl programs will directly result in executable binaries or libraries. Unless specified by user via a compilation parameter, midware C++ code will not become visible and will immediately be discarded after compilation. It will be possible to keep precompiled files to speed up compilation process for unedited sources. 2
  3. 3. 3. Openness Manifesto Doppl standard and compilation toolchain is officially decided to be available as open source and will always continue to be open. Development process will always be transparent and a website to maintain all the aspects mentioned above will be hosted under http://doppl.org domain. A mailing group will be formed to accept any kind of language proposals, suggestions and comments for best language evolution. The final open source license is yet to be formed, nonetheless there will be no legal constraints to prevent commercial use. In order to maintain transparency during development without the danger of being consumed by commercial acquisitions, these diary entries are licensed under CC BY-SA 3.0 until further notice as it enforces users of these materials to publish their work by the same license as well. 4. Conclusion Iteration #10 officially declares that Doppl programs will compile into modern C++11. Formed midware C++ sources will highly make use of newly introduced C++ features. It will be possible to access these midware files by hackers in order to implement optimizations as well as reveal concurrency and data oriented methodology of Doppl. Doppl project is open and will fully be available for commercial use free of charge. 5. Future Concepts Below are the concepts that are likely to be introduced in next iterations. ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● Parameterized branching, states as member type, anonymous states if conditional, trueness Bit data type Locks Primitive Collections and basic collection operators Provision operators Predefined task members Tasks as members Task and data traits Custom data types and defining traits Built-in traits for primitive data types Formatted input and output Message passing Exception states Dynamic Memory Multiple Source Files 6. License CC BY-SA 3.0 http://creativecommons.org/licenses/by-sa/3.0/ 3

×