Hi, embedded lovers! As an embedded system developer and lover for a long time, I think we need more for developer experience like web-developers' experience. But, what developer experience we need? We need quick, less-buggy and crossplatform development period. Nice but how?
New Age New Needs
For years, C/C++ and Assembly is key for embedded systems and more. Unhappily, Assembly is not modern and not easy-to-use. Assembly used when compilers can't used properly. Every manufacturer create a hexadecimal bootstrapper for their microschips' Assembly. For who doesn't know, every chip has architecture and every architecture has own unique Assembly that is changed by architecture. That is why learning Assembly is so hard. You need to learn different Assemblys for every unique architectures. At these days hexadecimal is not used at all but Assembly is used a lot when it comes to low-level-embedded-systems. Yes, Assembly is not so modern but can we say it for C too? At the same time; yes and no. C is modern-enough rather than Assembly but there is no modern programming concepts in C. Widely used in embedded industry but development time is unremarkably long. It is detrimental for companies and developers. At these lines of article, you may think "C++ has modern concepts and like C, why we don't use C++ widely.". That is a understandable idea but in industry we don't use C++'s special features because they are hard to use and they use memory a lot on 4Kb ram device or less. We need modern approach, cross-platform and small language for embedded systems and more.
New Age New Language
Syscall (sɪsˈkɔːl), the language we need. Assembly and Python like syntax comes with modern concepts by native is what we are looking for. Like learning an Asembly, it is easy. Using is easy a lot too. Like C, it is cross-platform. Like C++, we have objects and more. Take a brief glaze to syntax, and let it spark!
; there is no need for standard lib because we want to reach all hardware components in ease like assembly
main
add 1 2
num add
@print ; we declare print as function by use @ before func name
log num
return log
Syntax is weird I know, but there is things for weirdness. For undertanding the syntax:
- Main function is the only executed function by native. You need to call functions or use local functions for using them. (It will be changed in V2 by using flags.)
- Every function need return value for using at other functions, even the main function. If a function don't have return value, it can't written outside of another function.
- We need to declare functions by using @ when we don't use native functions.
- You didn't have to use bracets. And use ";" for comments.
- Language can reach every hardware like assembly. Just call.
Syscall is crossplatform that powered at backend by LLVM IR (We can use hexadecimal for plus after reaching a good community.). We will create a package manager soon for non-embedded system developers.
What Syscall Capable of?
Syscall is the language for ease. I've wrote you can easily reach every piece of hardware, remembered? You can create perfectly usable GUI's by native! If you want to create another library, just code in days with joy and publish by package manager. You can code bluetooth chips, another things and your own chip with every-step.
We will develop native libraries that can capable of design and test your chip by your unique architecture. And you can create compiler-compiler or just compiler for your own Assembly. Creating a architecture, testing and designing a chip and developing an Assembly is not so easy like that. So Syscall is capable of what Assembly capable of and plus. System Verilog and VHDL is not realy needed when it comes to Syscall. By these features, we'll see great projects and concepts we hope.
Lastly
At Kuaralabs we develop projects that can be built future and Syscall is one of them. An experimental repository is public at Syscall. We hope you will suggest great ideas! You can reach us by contact@kuaralabs.org or project@kuaralabs.org with "Syscall" title please. Have an excellent day! Thank you for reading our article.
Top comments (2)
Hi Yakup, welcome to DEV 😄 👋
This is an interesting approach, using a python-like syntax for portable assembly - cool! What motivated you to create something different to the LLVM IR textual representation (llvm.org/docs/LangRef.html)?
Hi Mr. Phil, thanks for a great question. Firstly, at Kuaralabs we done so many projects that is requires ridiculously futuristic things unfortunately that other technologies don't have. And creating a technology that brings innovation is so hard, most of the time because of the learning curve. When we create a framework or other technologies, our interns and developers need to study. That is what we don't want to see, because we can't develop our product in the time we wanted. That is why we are creating similarities between our and known technologies. This project can't run with LLVM to last stage, I know, but for representation and study, LLVM is the best. Even though LLVM is best, it looks like we will have to write bootstrap.