[Nolang]

Nolang is a programming language.
Design priciple of Nolang is to make C/C++ alike programming language with familiar syntax, which is even easier to adopt.
Top of that Nolang will add features you could only dream about on C/C++.

Features

Current status

Currently Nolang is under development and first public version was released 2010/10/08.
REMARK! Nolang is still under development and real usage is discouraged. These releases are ment just to be preview and to get feedback, improvements and bug fixes.

Releases

2011/07/27 nolang-20110727.tar.gz
- Starting API changes/break (new string & other stuff)
- Extension system support for library
- Test app for extensions under lib/
- Test extension under extensions/
- Extension code generation working in compiler
2011/07/17 nolang-20110717.tar.gz
- Packaging for different distros
2011/07/08 nolang-20110708.tar.gz
- Include
- Better compile and project handling
- Many improvements (Node, NString, etc.)
2011/07/06 nolang-20110706.tar.gz
- Project class
- More flexible build options
- Changed unicode handling from wchar to libunistring (API/ABI break)
- Cleanups
- Packaging
2011/06/12 nolang-20110612.tar.gz
- Fixes for parent methods and parameters
- Other tiny fixes.
2011/06/11 nolang-20110611.tar.gz
- New method call system
- Many improvements
2010/12/23 nolang-20101223.tar.gz
- Refrence parameters
- Optionally print parse tree (compile time option: --tree)
- Parent initialization drafting.
2010/10/24 nolang-20101024.tar.gz
- Array functions (push/pop/shift/unshift/clear)
- Trace (compile time option: --trace)
2010/10/16 nolang-20101016.tar.gz
- Method calls inside class object
- Assigning string or number to a array
2010/10/08 nolang-20101008.tar.gz
- First public release
- Basic scanner + lexer + parser + code generation
- Support very minimal set of features
- Features not fully implemented, missing functionality
- Needs a lot of refactoring, tidying code, etc.
- Most examples working properly, except test/test.nolang which has some future feature tests

Git

Git repository has always the lastest code. Clone Git repository using:
git clone http://nolang.com/git/nolang.git

Repositories

Built binaries are available for different Linux distributions. Please see all repositories and raw repository structureas at: http://nolang.com/repos/. Distribution specific inscructions below.

Ubuntu

To use it add this line to /etc/apt/sources.list:
Ubuntu 10.10 deb http://nolang.com/repos/ubuntu_10.10/ /
Ubuntu 11.04 deb http://nolang.com/repos/ubuntu_11.04/ /
Then do:
sudo apt-get update
sudo apt-get install nolangc nolang-extensions

Fedora

Currently Fedora 14 and 15 are supported. First you need to add repository to the package manager as super user:
Fedora 14 yum-config-manager --add-repo=http://nolang.com/repositories/fedora_14/nolang.repo
Fedora 15 yum-config-manager --add-repo=http://nolang.com/repositories/fedora_15/nolang.repo
To install Nolang just do as super user:
yum install nolang nolang-extensions

OpenSUSE

OpenSUSE 11.3 zypper addrepo http://nolang.com/repos/opensuse_11.3/ "Nolang"
OpenSUSE 11.4 zypper addrepo http://nolang.com/repos/opensuse_11.4/ "Nolang"
To install Nolang just do as super user (for unsigned packages just answer "yes"):
zypper ref
zypper install nolang nolang-extensions

Patches and bugs

Patches can be sent to: .
Bug reports can be sent to: .
Any feedback can be sent to: .

Code examples

Some code examples.

Hello World!

First the traditional "Hello World" application!

helloworld.nolang

main()
{
    print "Hello, World!\n";
}
	

Output

Hello, World!

Extended Hello World!

hello2.nolang

Download hello2.nolang.

Output

Extended Hello, World 42!
First value: 4
Whole array: 4 5 6 
	

More complex test

test2.nolang

Download test2.nolang.

Output

Extended Hello, World 42!
Second value: 5
Whole array: 4 5 6 42 
Second value: 45
Whole array: 123 45 

Advanced test

test7.nolang

Download test7.nolang.

Output

Extended Hello, World 42!
Test::dump()
Second value: 5
Whole array: 4 5 6 42 
Array size: 4
Test::dump()
Second value: 45
Whole array: 123 45 
Array size: 2
Int size: 4
get(1): 45
Test::dump()
Second value: 270
Whole array: 246 270 
get(1): 270
2==2
Array data values are: 1 3 
Array sdata values are: Test 
Before noref: 4 6 8 9 4 
After noref: 4 6 8 9 4 
After ref: 4 6 8 9 4 5 
Got 5
Got 42
Other::dump()
Second value: 5
Whole array: 4 5 6 
Otherval: 5
Other::dump()
Second value: 5
Whole array: 4 5 6 12 
Otherval: 5

More examples

More examples.

License

Nolang is released under an Open source license. The license is BSD compatible.
Copyright (c) 2010-2011 Nolang project All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


©2010-2011 Nolang project
Tapir picture licensed under GNU FDL 1.2.