Meta Documentation

Getting Started

Please note that the current version of Meta is a very early release. Many planned features are not implemented yet, and many implemented features do not work as planned yet. There is a lot there, but Meta's glass is currently half full and half empty. It seems to be human nature to focus on the empty half, but that will leave you empty. We strongly advise you to focus on the full half. A journey of a thousand miles starts with taking the first step. Many of the current limitations can be worked around, and Meta will still reward you with outstanding results. The language is incomplete, but compiled programs are of production quality, blazingly fast, efficient and with few dependencies - unless you need garbage collection of memory for long-running programs.

[Glass]

Be aware that Meta is a different and unique language that you need to learn and practise to understand and become comfortable with. Study the reference documentation and the published example programs to have the best chance of success. If you have no experience with languages from the REBOL family, you must work through the REBOL documentation to build up an understanding of the language principles. Before that, the examples probably won't make sense to you. It's like going to a foreign country. You may recognise some words in the foreign language, yet they have slightly but importantly different meanings, they are used in different orders, and the written punctuation and diacritics are different. You can't expect to understand it without learning the language. If you expect a new computer language to be the same as the languages you already know, you can't expect it to have any advantages in the wide range of possible languages. Meta uses different paradigms to achieve such advantages.

It is currently too early to call known unimplemented features bugs, so it is not useful yet to formally report them. We will use your submissions to our build service to help decide which features to improve in what order. This way, issues are reported on our build service automatically, without any extra work needed from you. However, if one of the published example programs doesn't work for you, please report it in the community forums. If you feel a pressing need for a particular improvement, you can also discuss it there or contact us for contract work.

Your program text is sent to our free Meta build service over an encrypted connection, where it is compiled to an executable program. The Meta compiler is a combination of toolchains that is complex to install and maintain. This way, you don't have to do that on your systems.

The project operates on the principle that everyone who uses it, contributes something to it. We are not in the business of selling your information, so we will keep it confidential and not provide it to third parties, but we may retain and analyse your submissions to improve Meta. For security, please don't include sensitive information in your programs. If you need to handle sensitive information, such as passwords, read it in from separate data files.

Show Me the Code!

Programmers like to start with a new language by trying the traditional Hello World example. It's a small program that shows that the language works and can interface with the host system to write a text on the screen:

Write/line "Hello, world!"

It is easy to get started with Meta, like old-timers were used to in user-friendly languages such as BASIC. There is no boilerplate code required such as in many other languages.

See the examples collection for more examples and a downloadable source file of Hello World.

Reference Documentation

Writing documentation for Meta is a large, ongoing task. In the meantime, it is useful or even mandatory to read the documentation for the REBOL programming language. Meta is a descendant of REBOL, but there are many subtle differences to optimise the language. Keeping that in mind, here are the most applicable sections of the REBOL documentation:

Refer to the published examples and other sample programs for Meta-specific information. We will add to these collections and write more documentation over time.

Meta helps with trying out and converting code from several other, related languages. It detects some words and paths from other REBOL-like languages: REBOL 3, REBOL 2, Red, Red/System and Boron, and some words from the Logo, Lisp and Scheme language families. An error message will be produced, but when there is an alternative in Meta, this will be suggested.

Currently, the best way to work with Meta is to assume that it does what REBOL does, and then let the Meta compiler tell you what is different or not supported yet. Don't get discouraged by error messages: they are there to help you, to find another way. If you happen to know lower-level languages like C or Pascal, it helps to keep in mind that, although Meta looks like REBOL, its supported features such as data types are currently more like these lower-level languages. Most higher-level REBOL features will be added later. If you need human help, don't hesitate to ask for it on the community forums.


Copyright © 2021,2022,  Kaj de Vos