1) A shell environment where scripts can be run and debugged.
2) A platform on which modules can be created to extend the capabilities of the language easily, as well as a huge set of standard modules.
3) A program that packages scripts into easily distributed standalone executables (ok, so those other languages consider that a bonus)
Enter AngelRAD, a shell environment designed with the goal of allowing applications to be completely written in AngelScript, using C++ only when the packages available don't provide what you need. Modules are distributed as compiled shared libraries (that's Dynamic Link Library for those in Windowsland) and plugged into the runner, giving the engine access to new classes and features. Want to write the next great game? Not a problem. How about an IRC bot? Easy! AngelRAD makes absolutely no assumptions as to what kind of program you want to make.
And there's more! Using that same modular interface, AngelRAD can even allow you to extend the capabilities of the shell itself! Want to add to the shells set of standard commands? Write one and plug it in!
Right now, I am at the point where I am cleaning up the public interface for first release, but I could use all the help I can get. As it stands, the only module I have written for this is a sockets module, and by myself, it would take a very long time to make a full set of modules that even comes close to the number of modules for languages such as python. If you want to help me reach first release, PM me or find me on IRC (irc.freenode.org #luarad,#angelrad,#archlinux,#archlinux-offtopic). Here is what I need:
* Experienced C++ programmers who are willing to develop modules that work on both the Linux and Windows platforms. osx support is low on my priorities right now, but a plus if you have experience.
* Testers for both windows and linux.
* If you have experience making packages for various linux distributions, then that is a huge plus.
If I feel you can help, then I will send you the documentation describing how the module system works.
Any and all other questions and comments are welcome.
Now, I feel obligated to do this. Here is an IRC bot written to work with the development environment.
// arsocks test// Author: orm#use "arsocks" // loads the binary module if it is not loaded already[entry:] // metadata denotes the entry function for shell command scripts and what arguments the function takes. this may change before releasevoid run() // entry function name for the shell command script. this will not change.{ println("arsocks test."); active_socket@ socket = active_socket(1); println("Socket constructed"); socket.initialize(); println("Socket initialized, connecting..."); if(socket.connect("irc.freenode.org",6667)==true) { println("Socket connected."); int bar = socket.send("USER angelbot 8 * :AngelScript IRC bot.\r\n"); int foo = socket.send("NICK angelbot\r\n"); println("Data sent"); int f; bool run=true; while(run) { ubytebuffer@ recvbuff = ubytebuffer(); int chars = socket.receive(recvbuff,510); if(chars>0) { string@ s = string(); recvbuff.get_string(s); s=substring(s,0,s.length()-1); println(s); string@[] strarr=split(s," "); for(int i=0;i<strarr.length();i++) { if(strarr=="PING") { socket.send("PONG "+strarr[1]+"\r\n"); println("PING:PONG"); } else if(strarr=="004") // we are logged in. { socket.send("JOIN #angelrad\r\n"); } else if(strarr=="366") { socket.send("PRIVMSG #angelrad :Hey! It worked.\r\n"); socket.send("QUIT"); run=false; } } if(strarr[0]=="ERROR") // server sent us an error message run=false; } } } else println("Failed to connect to server."); socket.close();}