<p>My name is <ahref="https://www.facebook.com/lastmac">Alexander Borisov</a>, and I am the developer of <ahref="https://github.com/lexborisov/Modest">Modest</a>, an open source HTML Render on the pure C programming language, without dependencies.</p>
Thanks to the C99 programming language, there are no outside dependencies, and therefore the project can be easily ported to any platform where C is available, and as we all know, C is actually available everywhere.<br>
Moreover, Modest is being developed in such a way that in case of compilation on a specific platform it can be easily adapted to that platform.</p>
<b>Binding for third party programming languages</b>
<p>
The engine uses a simple API to provide binding for third party programming languages. This helps create fully functional HTML Render with your favorite programming languages, such as Python, Perl, Rust, JS and so on.</p>
<p>Besides this, the API provides the control and interference features at every step of HTML rendering.
All this provides a unique capacity to control the HTML Tree, Render Tree, and Layers, without unwanted intercalations.</p>
<p>For instance, you can create interfaces, games, applications using your favorite programming languages, and use all the power of HTML/CSS/DOM Events.
Of course, when talking about embedded code, we first think about TV sets and other IoT devices.</p>
<p>As Modest is an embedding-oriented solution for third party applications, one of the key criteria is its operational speed.
And the project has something special to be proud of:</p>
<ul>
<li>Today, Modest has the fastest fully functional HTML parser with multi-thread parsing capability</li>
<li>Very fast CSS parser with output to C structures (this means not only the AST Tree)</li>
<li>Very fast search using CSS Selectors</li>
<li>And so on</li>
</ul>
<p>
Despite the high operational speed, Modest is being developed with code openness and clearness in mind. And it provides opportunities to maintain and develop further the entire project with ease. And I am not making any pre-optimizations, thus keeping more ways open for the project to grow.</p>
When embedding a third party code to our own, we used to hope it would be “normal”, it would not eat up all available resources, and it would really be “modest”.
It is a real challenge to create a fully functioning HTML Render with low resource consumption. This requires a serious approach.
That is why you need to learn carefully any specifications, and understand not only how to use them at the moment, but also what features developers might include in the future.</p>
<p>
As the developer of this product, I can guarantee as minimal use of resources as possible. The whole development is being made while always keeping in mind two parameters: memory and CPU (speed)</p>
<h3><aid="status"class="anchor"href="#status"aria-hidden="true"><spanaria-hidden="true"class="octicon octicon-link"></span></a>Current Status of the Project</h3>
<p>
Right at the moment, the project has the following components implemented:</p>
<ul>
<li><ahref="https://github.com/lexborisov/myhtml">MyHTML</a> — HTML parser, manipulations with HTML Tree, encoding conversion, and so on. This is the basic project that Modest is based on.</li>
<li><ahref="https://github.com/lexborisov/mycss">MyCSS</a> — CSS parser (Selectors, Values, Namespace, Property), getting resulting structures, С structures for further manipulation.</li>
<li>MyFONT — parser of .otf and .fft fonts. Getting metrics for glyphs: width, height, baseline, x-height, etc.</li>
<li>Finder — search and comparison of CSS and HTML</li>
<li>+ much supplementary code</li>
</ul>
<p>
At the moment, Modest can be used for:</p>
<ul>
<li>Parsing and manipulations with <ahref="https://github.com/lexborisov/Modest/tree/master/examples/myhtml">HTML</a>, <ahref="https://github.com/lexborisov/Modest/tree/master/examples/mycss">CSS</a>, <ahref="https://github.com/lexborisov/Modest/tree/master/examples/myfont">Font</a></li>
<li><ahref="https://github.com/lexborisov/Modest/tree/master/examples/modest">Search for HTML modes by CSS Selectors</a></li>
<li>Getting CSS properties defined in HTML node</li>
At the moment, almost everything is ready for tree rendering (Render Tree, Layers). However, before I start to compute HTML, I have to stabilize the current code, find architectural bugs, and make general improvements.
I think I will start making the rendering tree and layers in the very beginning of 2017.</p>
<h3><aid="help"class="anchor"href="#help"aria-hidden="true"><spanaria-hidden="true"class="octicon octicon-link"></span></a>Help for the Project</h3>
<p>
The entire project is being developed by myself, with a little help from the community (issues, bugs, and so on), but the project needs developers and testers.
Now I am looking for options to attract investors or companies interested in this project, and ready to support it.</p>
<pstyle="padding-top: 20px;"><b>Thanks for attention!</b> Hope you'll enjoy it!</p>
<p>
P.S.: There are many ideas around, and I have more than enough fuel!</p>
<h4>See prev article: <ahref="http://lexborisov.github.io/benchmark-html-persers/">Benchmark. Analyzing and Testing Current HTML Parsers</a></h4>
<footerclass="site-footer">
<spanclass="site-footer-owner"><ahref="https://github.com/lexborisov/modest">Modest</a> is maintained by <ahref="https://github.com/lexborisov">lexborisov</a>.</span>
<spanclass="site-footer-credits">This page was generated by <ahref="https://pages.github.com">GitHub Pages</a> using the <ahref="https://github.com/jasonlong/cayman-theme">Cayman theme</a> by <ahref="https://twitter.com/jasonlong">Jason Long</a>.</span>