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`.
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. 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. 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