Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								327076da39 
								
							 
						 
						
							
							
								
								examples/test: add slice-a-slice test  
							
							
							
						 
						
							2018-09-14 21:02:29 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								1387a1024d 
								
							 
						 
						
							
							
								
								examples/test: small cleanup  
							
							... 
							
							
							
							I forgot to remove some commented out code... 
							
						 
						
							2018-09-14 21:00:52 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								112f6dc01a 
								
							 
						 
						
							
							
								
								all: implement tinygo flash command  
							
							... 
							
							
							
							This will now just work:
    tinygo flash -target=arduino examples/blinky1 
							
						 
						
							2018-09-14 20:59:28 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								6450daa3c8 
								
							 
						 
						
							
							
								
								runtime/cgo: go fmt  
							
							
							
						 
						
							2018-09-14 20:58:00 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								13633133a5 
								
							 
						 
						
							
							
								
								Makefile: simplify make fmt  
							
							... 
							
							
							
							There is no C source file anymore `go fmt` will complain about. 
							
						 
						
							2018-09-14 20:57:21 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								09cbd223c3 
								
							 
						 
						
							
							
								
								compiler: remove -runtime flag  
							
							... 
							
							
							
							It is not necessary anymore. 
							
						 
						
							2018-09-14 20:56:48 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c763e9f1a6 
								
							 
						 
						
							
							
								
								compiler: produce .hex files directly  
							
							
							
						 
						
							2018-09-14 20:27:04 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								f41a8032e7 
								
							 
						 
						
							
							
								
								machine/dummy: add fake button pins  
							
							
							
						 
						
							2018-09-14 17:01:16 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								752332ff13 
								
							 
						 
						
							
							
								
								machine/nrf: implement reading GPIO pins  
							
							
							
						 
						
							2018-09-14 16:59:28 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ron Evans 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								ab6757fe11 
								
							 
						 
						
							
							
								
								avr: implement Get() function on AVR, and leave stubs for NRF and dummy machines  
							
							... 
							
							
							
							Signed-off-by: Ron Evans <ron@hybridgroup.com> 
							
						 
						
							2018-09-13 20:54:01 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								ec50db729d 
								
							 
						 
						
							
							
								
								compiler: implement slicing slices  
							
							
							
						 
						
							2018-09-13 20:49:35 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								5b3ef2c02f 
								
							 
						 
						
							
							
								
								compiler: fix unreachable type assert  
							
							... 
							
							
							
							The unreachable instruction is actually a block terminator so may only
be inserted at the end of a basic block. This is not always the case for
type asserts, so don't insert this instruction.
LLVM will hopefully optimize it anyway when it realizes anything after
the panic() call is unreachable. 
							
						 
						
							2018-09-13 20:48:23 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								9cd7c7f0ba 
								
							 
						 
						
							
							
								
								compiler: fix phi nodes for type asserts  
							
							... 
							
							
							
							Type asserts insert more basic block, causing phi node values to be
invalid. Fix this by remembering the outgoing LLVM basic block. 
							
						 
						
							2018-09-13 20:42:04 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								57661a3c76 
								
							 
						 
						
							
							
								
								compiler: fix typeassert without comma-ok for unused types  
							
							
							
						 
						
							2018-09-13 16:58:44 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ron Evans 
								
							 
						 
						
							
							
							
							
								
							
							
								d948abdf82 
								
							 
						 
						
							
							
								
								avr: correct register for Set() operation on pins 0-7  
							
							... 
							
							
							
							Signed-off-by: Ron Evans <ron@hybridgroup.com> 
							
						 
						
							2018-09-13 12:03:04 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								76e77917d8 
								
							 
						 
						
							
							
								
								targets: move target-specific files to this directory  
							
							
							
						 
						
							2018-09-13 00:59:39 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								e389d38dec 
								
							 
						 
						
							
							
								
								Makefile: improve gen-device* commands  
							
							
							
						 
						
							2018-09-13 00:55:49 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								18b3e8d156 
								
							 
						 
						
							
							
								
								gen-device: move to new tools directory  
							
							
							
						 
						
							2018-09-13 00:55:18 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								a46ed465c5 
								
							 
						 
						
							
							
								
								README: defer has been fully implemented  
							
							
							
						 
						
							2018-09-13 00:31:43 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								422c848163 
								
							 
						 
						
							
							
								
								README: fix nrf example and add arduino example  
							
							
							
						 
						
							2018-09-13 00:23:53 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								7e7502a990 
								
							 
						 
						
							
							
								
								README: update build instructions  
							
							
							
						 
						
							2018-09-13 00:23:45 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								5e9e3bd1a0 
								
							 
						 
						
							
							
								
								Makefile: use the compiler driver directly  
							
							
							
						 
						
							2018-09-12 23:55:13 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								76a513802f 
								
							 
						 
						
							
							
								
								targets/pca10040: support linking from within the compiler  
							
							... 
							
							
							
							This is kind of dirty with that huge list of linker params, but it works
and it produces smaller object files (probably because GCC is better
optimized for size). 
							
						 
						
							2018-09-12 23:40:21 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								8ce139284a 
								
							 
						 
						
							
							
								
								all: remove last traces of the C runtime  
							
							... 
							
							
							
							This increases code size on the nrf, but it is a fixed increase and can
hopefully be reduced in the future.
The Makefile gets a lot smaller with this which is a huge advantage
(less build time complexity). 
							
						 
						
							2018-09-12 23:26:30 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								f7f7d4cbbc 
								
							 
						 
						
							
							
								
								runtime/nrf: translate nrf sleep function from C to Go  
							
							... 
							
							
							
							This is the last critical part of the C runtime.
Code size is reduced by 4 bytes for examples/blinky2 (probably due to
inlining) and is unchanged for examples/test. 
							
						 
						
							2018-09-12 22:24:17 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								67e33ac30e 
								
							 
						 
						
							
							
								
								gen-device-svd: add _Pos and _Msk fields  
							
							... 
							
							
							
							Without these extra fields, it is impossible to read/write some register
bits correctly. 
							
						 
						
							2018-09-12 22:06:42 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								2788ab0172 
								
							 
						 
						
							
							
								
								all: rename __reg to __volatile  
							
							... 
							
							
							
							It is less magical now: it only marks loads and stores as volatile. So
the name '__reg' is a bit wrong now. 
							
						 
						
							2018-09-12 22:05:41 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								914cd56ca5 
								
							 
						 
						
							
							
								
								all: support Arduino in the compiler driver  
							
							... 
							
							
							
							This makes sure the compiler itself can build/link an ELF file that
works on an Arduino. 
							
						 
						
							2018-09-12 20:55:50 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								865520b571 
								
							 
						 
						
							
							
								
								compiler: act as a compiler driver (on unix systems)  
							
							... 
							
							
							
							As a final step, link the object file with the system compiler/linker.
TODO: cross compiling. 
							
						 
						
							2018-09-12 19:59:13 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								6ab2b30984 
								
							 
						 
						
							
							
								
								compiler: move output file type selection to main.go  
							
							
							
						 
						
							2018-09-12 19:11:50 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								9bec479041 
								
							 
						 
						
							
							
								
								all: make targets configurable with a JSON file  
							
							... 
							
							
							
							This is intentionally similar to the target specifications in Rust:
https://doc.rust-lang.org/nightly/nightly-rustc/rustc_target/spec/struct.TargetOptions.html  
							
						 
						
							2018-09-12 18:28:39 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								20c2552f8a 
								
							 
						 
						
							
							
								
								compiler: add 'run' command for bytecode interpretation  
							
							
							
						 
						
							2018-09-12 17:26:56 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								8362751590 
								
							 
						 
						
							
							
								
								compiler: use runtime.GOOS/GOARCH instead of hardcoding build tags  
							
							
							
						 
						
							2018-09-12 17:25:43 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								e9b0a7d2ae 
								
							 
						 
						
							
							
								
								compiler: improve command line errors  
							
							
							
						 
						
							2018-09-12 17:25:14 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								0779ee6088 
								
							 
						 
						
							
							
								
								compiler: improve command line argument parsing  
							
							... 
							
							
							
							To get more compatibility with the go command, implement a similar
command line interface (with "tinygo build <package>" etc.).
Other than that, an all-round cleanup of command parsing. 
							
						 
						
							2018-09-12 17:23:36 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								81b9edbe65 
								
							 
						 
						
							
							
								
								compiler: print() doesn't print spaces between arguments  
							
							
							
						 
						
							2018-09-11 20:01:49 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								8675025fc8 
								
							 
						 
						
							
							
								
								compiler: implement type assert without comma-ok  
							
							
							
						 
						
							2018-09-11 19:51:31 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								31e0662856 
								
							 
						 
						
							
							
								
								runtime: use a specialized runtime panic function  
							
							... 
							
							
							
							This specifically fixes unix alloc(): previously when allocation fails
it would (recursively) call alloc() again to create an interface due to
lacking escape analysis.
Also, all other cases shouldn't try to allocate just because something
bad happens at runtime.
TODO: implement escape analysis. 
							
						 
						
							2018-09-11 19:50:49 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								4ad6df3227 
								
							 
						 
						
							
							
								
								all: complete the implementation of interface asserts  
							
							... 
							
							
							
							Because a few things were left unimplemented it only happened to kind-of
work before in my test cases.
This commit should complete interface-to-interface type asserts. 
							
						 
						
							2018-09-11 19:39:25 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								61e6f7cf5b 
								
							 
						 
						
							
							
								
								compiler: add debug information for function parameters  
							
							... 
							
							
							
							Add 'optimized-out' parameters to functions. This might make debugging
slightly easier by showing parameter names.
Sadly I din't get setting variables to work. It might be a bug in
CreateExpression. 
							
						 
						
							2018-09-11 17:00:24 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								43b8c24226 
								
							 
						 
						
							
							
								
								compiler: implement interface assertions  
							
							... 
							
							
							
							This is a lot harder than 'regular' type assertions as the actual
methods need to be checked. 
							
						 
						
							2018-09-06 20:18:18 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								30ac6ec281 
								
							 
						 
						
							
							
								
								compiler: don't try to get pointer methods  
							
							... 
							
							
							
							I don't know why this was ever needed, but it seems to be incorrect and
unnecessary. 
							
						 
						
							2018-09-06 20:04:41 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								0f83c3b3c6 
								
							 
						 
						
							
							
								
								compiler: allow copying a string to a slice  
							
							... 
							
							
							
							Now that strings and slices are similar, this just works. 
							
						 
						
							2018-09-06 10:53:18 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								41a50ec336 
								
							 
						 
						
							
							
								
								compiler: simplify code for builtin len()  
							
							... 
							
							
							
							Strings and slices now have the len element at the same location. 
							
						 
						
							2018-09-06 10:52:36 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								31f494e611 
								
							 
						 
						
							
							
								
								all: swap string from {len, ptr} to {ptr, len} for slice compatibility  
							
							... 
							
							
							
							Having slices and strings be similar makes other code simpler. 
							
						 
						
							2018-09-06 10:50:13 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								5aa8b71ae1 
								
							 
						 
						
							
							
								
								compiler: implement builtin copy(dst, src []T)  
							
							... 
							
							
							
							Not implemented: copying a string into a []byte slice. 
							
						 
						
							2018-09-06 10:37:44 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								fd9fa038a9 
								
							 
						 
						
							
							
								
								compiler: fix make([]T, ...) type  
							
							
							
						 
						
							2018-09-06 10:37:00 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								01635b5efd 
								
							 
						 
						
							
							
								
								runtime: move panic functions to a separate file  
							
							
							
						 
						
							2018-09-06 09:59:32 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								65358ed3c9 
								
							 
						 
						
							
							
								
								interpreter: don't panic on a nil (*ssa.Call).Object()  
							
							
							
						 
						
							2018-09-06 09:47:39 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								094c5561b6 
								
							 
						 
						
							
							
								
								compiler: implement make([]T, ...)  
							
							
							
						 
						
							2018-09-06 09:46:58 +02:00