zig/src
Andrew Kelley cf4bccf765
improvements targeted at improving async functions
* Reuse bytes of async function frames when non-async functions
   make `noasync` calls. This prevents explosive stack growth.
 * Zig now passes a stack size argument to the linker when linking ELF
   binaries. Linux ignores this value, but it is available as a program
   header called GNU_STACK. I prototyped some code that memory maps
   extra space to the stack using this program header, but there was
   still a problem when accessing stack memory very far down. Stack
   probing is needed or not working or something. I also prototyped
   using `@newStackCall` to call main and that does work around the
   issue but it also brings its own issues. That code is commented out
   for now in std/special/start.zig. I'm on a plane with no Internet,
   but I plan to consult with the musl community for advice when I get a
   chance.
 * Added `noasync` to a bunch of function calls in std.debug. It's very
   messy but it's a workaround that makes stack traces functional with
   evented I/O enabled. Eventually these will be cleaned up as the root
   bugs are found and fixed. Programs built in blocking mode are
   unaffected.
 * Lowered the default stack size of std.io.InStream (for the async
   version) to 1 MiB instead of 4. Until we figure out how to get
   choosing a stack size working (see 2nd bullet point above), 4 MiB
   tends to cause segfaults due to stack size running out, or usage of
   stack memory too far apart, or something like that.
 * Default thread stack size is bumped from 8 MiB to 16 to match the
   size we give for the main thread. It's planned to eventually remove
   this hard coded value and have Zig able to determine this value
   during semantic analysis, with call graph analysis and function
   pointer annotations and extern function annotations.
2019-09-12 01:40:58 -04:00
..
all_types.hpp
analyze.cpp
analyze.hpp
ast_render.cpp
ast_render.hpp
bigfloat.cpp
bigfloat.hpp
bigint.cpp
bigint.hpp
blake2.h
blake2b.c
buffer.cpp
buffer.hpp
c_tokenizer.cpp
c_tokenizer.hpp
cache_hash.cpp
cache_hash.hpp
codegen.cpp
codegen.hpp
compiler.cpp
compiler.hpp
config.h.in
errmsg.cpp
errmsg.hpp
error.cpp
error.hpp
glibc.cpp
glibc.hpp
hash_map.hpp
install_files.h
ir_print.cpp
ir_print.hpp
ir.cpp
ir.hpp
libc_installation.cpp
libc_installation.hpp
link.cpp
list.hpp
main.cpp
os.cpp
os.hpp
parse_f128.c
parse_f128.h
parser.cpp
parser.hpp
range_set.cpp
range_set.hpp
softfloat.hpp
stack_report.cpp
stack_report.hpp
target.cpp
target.hpp
tokenizer.cpp
tokenizer.hpp
translate_c.cpp
translate_c.hpp
userland.cpp
userland.h
util.cpp
util.hpp
windows_com.hpp
windows_sdk.cpp
windows_sdk.h
zig_clang_cc1_main.cpp
zig_clang_cc1as_main.cpp
zig_clang_driver.cpp
zig_clang.cpp
zig_clang.h
zig_llvm.cpp
zig_llvm.h