Better use of style @set’s

In next version (4.0.0.2 and above) I am changing the way of how @set’s are applied in user’s style sheet.

Style sets will be applied before any other rules in the same style sheet.

So if you have

@set MySet {
  :root { color:red; width:*; }
}

myelement { style-set: MySet; }

And later define

myelement#test {
  color:blue;
}

then <myelement id=test>...</myelement> element will have blue color.

So you can think of style sets as definition of default styles. Ordinary CSS rules are applied on top of them allowing to style concrete elements.

Starting Sciter v.4.*.*.* series

Major changes:

SDK will include versions of Sciter with Skia graphics backend.

On Windows sciter is compiled as different DLLs having the same name sciter.dll locating in following folders:

  • bin/32/sciter.dll \
  • bin/64/sciter.dll – Direct2D and GDI+ backends as before
  • bin/skia32/sciter.dll \
  • bin/skia64/sciter.dll – Direct2D and Skia/OpenGL backends.

On MacOS sciter will include as CoreGraphics as Skia/OpenGL backends switchable by SciterSetOption() function.

On Linux I will have separate sciter.so that will not use GTK at all . Instead it will expose SciterProcX function similar to SciterProcND. Basic purpose: to use Sciter with SDL, GLFW and the like environments.

On the road to better documentation

Sciter documentation, how to say in polite manner, is not convenient. I know.

So looking for ideas of making it better.

Problem is that I need documentation for at least of two types of media: for Sciter’s help browser and for the web. While I can use HTML it is not always use the same files. Standard CSS is not at Sciter’s level yet.

For example I missed things like flow:row(dt,dd), simply no such things in conventional CSS. <dl/dt/dd> lists are barely usable without proper styling. To achieve flow:row(dt,dd) layout on the web it need to render it as a table, sigh.

So it is clear that documentation shall use some other format and be assembled from it for particular use. One of obvious choices is to use Markdown for that. So I need markdown parser in Sciter that supports hierarchical constructs like <li><pre>… I’ve managed to implement such a parser in 250 lines of code. Just in case, original Perl parser written by John Gruber is about 1400 lines of highly cryptic Perl code. In Sciter I am using generators/yield that allowed to simplify the whole thing.

This is how test-bed looks that far:

And speaking about software documentation in general.

I’d appreciate any examples of good examples of software documentation. But not from Microsoft or Apple please – they are barely readable.

Optimising ‘+=’ and ‘+’ operators for strings.

This simple code:

var s = "";
for(var i = 0; i < 50000; ++i) {
  s += "*";
}

code used to run in Sciter in 874ms.

After implementing simple and obvious optimization it runs now in just 4ms.

String concatenation was implemented as simple string allocation of size(r) = size(s1) + size(s2) and memcpy of s1 and s2 into that new string r.

Memory allocation in script is cheap - just increment memory pointer by size of requested memory chunk and you are done. So in theory that naïve strcat shall be lightning fast. But it is definitely not. There is a hidden cost of GC cycles - at the moment of concatenation r,s1 and s2 shall be present in memory.

So "0123456789" + "A" needs memory for 10 + 1 + 11 = 22 characters. And on each iteration that number increases - the VM is busy cleaning garbage most of the time.

So when someone from C# and Java crowds is saying you that memory allocation is cheap take it with a grain of salt.

Sublime 3, Sciter syntaxes

Sciter HTML/CSS/script in Sublime3

Steps to add Sciter support to Sublime3

  1. In Sublime: menu Preferences » Browse Packages. It will open /Packages folder.
  2. Create folder named Sciter right in that folder.
  3. Download all *.tmLanguage files from github.com/svitalij/sciter.tm.syntax
  4. Copy those *.tmLanguage files into that folder.

Done. Now if you will open .tis files in Sublime3 you will see syntax highlighting.

To edit HTML and CSS files with Sciter specific extensions select

View » Syntax » Sciter » Sciter HTML

Gratitude to Vitalij Shitts the Great

Sciter assistant for Visual Studio Code

Early BETA of Sciter Assistant for Microsoft Visual Code by ConrLab.

MS-visual-code-sciter

Microsoft Visual Code, Sciter assistant in actions 

Supports syntax and editing of Sciter HTML and CSS flavours and TIScript.

Code completion in CSS including @mixin/@const constructs and script for this and variables starting from el....

If to update user settings (File->Preferences->User Settings) like this:
code-preferences

then by using Ctrl-K, Ctrl-S sequence you can run it in sciter.exe.