mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-31 15:43:01 +00:00 
			
		
		
		
	Update README.md
This commit is contained in:
		
							
								
								
									
										45
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								README.md
									
									
									
									
									
								
							| @@ -2,9 +2,9 @@ | ||||
|  | ||||
| [](https://travis-ci.org/bakpakin/gst) | ||||
|  | ||||
| GST is a language and vm that is small and embeddable, has metaprogramming | ||||
| gst is a language and vm that is small and embeddable, has metaprogramming | ||||
| facilities, can interoperate with C, and has enough features to make it | ||||
| a useful general purpose programming language. It is a modern variant of | ||||
| a useful general purpose programming language. It is a variant of | ||||
| Lisp with several native useful datatypes. Some of the more interesting and | ||||
| useful features are first class functions and closures, immutable and mutable | ||||
| hashtables, arrays, and bytebuffers, macros (NYI), tail-call optimization, | ||||
| @@ -12,13 +12,11 @@ and continuations (coroutines, error handling). The runtime and bootstrapping | ||||
| compiler are written in C99, but should eventually be completely compatible | ||||
| with C89 compilers. | ||||
|  | ||||
| As of April 2017, still WIP. While the basic runtime is in place, as are many | ||||
| As of July 2017, still WIP. While the basic runtime is in place, as are many | ||||
| native functions, several important features are still being implemented and | ||||
| defined, like continuations and macros. These are also dependant on the | ||||
| compiler being ported to gst, which is ongoing. The module system is also not yet | ||||
| fully defined. | ||||
| defined, like the module system and macros. | ||||
|  | ||||
| Currently, there is a repl for trying out the language, as well as the ability | ||||
| There is a repl for trying out the language, as well as the ability | ||||
| to run script files. This client program is separate from the core runtime, so | ||||
| gst could be embedded into other programs. | ||||
|  | ||||
| @@ -28,46 +26,45 @@ Clone the repository and run: | ||||
| ```sh | ||||
| make run | ||||
| ``` | ||||
| To build the runtime and launch a repl. The GNU readline library is | ||||
| also required for the repl/client, but is not a dependency of the gst runtime. | ||||
| To build the runtime and launch a repl. | ||||
|  | ||||
| ## Basic programs | ||||
|  | ||||
| To run some basic programs, run the client with one argument, the name of the | ||||
| file to run. For example, the client that is built will be located in the | ||||
| client directory, so running a program `script.gst` from the project directory | ||||
|  would be | ||||
|  | ||||
| ```sh | ||||
| client/gst script.gst  | ||||
| would be | ||||
| ```bash | ||||
| client/gst script.gst | ||||
| ``` | ||||
|  | ||||
| You can also use the `--help` option to see more usage information for the vm. | ||||
|  | ||||
| ## Running Tests | ||||
|  | ||||
| Simply run `make test` to run the currently minimal test suite. | ||||
|  | ||||
| ## Todo | ||||
|  | ||||
| * Documentation, with the caveat that things may change. | ||||
| * Use serialization to allow creation of bytecode files that can be loaded. | ||||
|   This includes defining a file format for the bytecode files. | ||||
|   This includes defining a file format for the bytecode files. This mostly done. | ||||
|   The byte code serialization could also be useful for the module system for loading artifacts. | ||||
| * Pattern matching/regex library, as well as string formatting functions. This | ||||
|   would also be useful for implementing better error messages. | ||||
| * Better error messages, expecially for compilation. This probably means string | ||||
|   formating functions. | ||||
| * Pattern matching/regex library. | ||||
| * Macro/specials system that happens before compilation | ||||
| * Module system that happens before compilation. This would be closely tied to | ||||
|   the macro/specials system (require implemented as compile time special). For | ||||
|   now, a runtime require might make more sense. | ||||
| * Module system. Something similar to node's require. | ||||
| * Change name (gst is the name of many projects, including GNU Smalltalk). | ||||
|   Maybe make logo :)? | ||||
| * Automated testing, including Makefile target. | ||||
| * Travis CI. | ||||
| * Change C API to be stack based for fewer potential memory management | ||||
|   problems. This could mean making current C API internal and use separate | ||||
|   API externally. | ||||
| * Store source information in parallel data structure after parsing | ||||
| * Use source information during compilation | ||||
| * Bitwise operators that operate on integer types | ||||
| * Use Lua style memory alocator backend C API (one single function for | ||||
|   allocating/reallocating/freeing memory). | ||||
| * More CLI functionality for main client | ||||
| * Document builtin libraries and functions. | ||||
| * Document C API. | ||||
| * More builtin libraires. | ||||
| * Fuzzing | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bakpakin
					bakpakin