about summary refs log tree commit diff
path: root/src/rt/rust_builtin.cpp
AgeCommit message (Collapse)AuthorLines
2011-09-01Convert rust_file_is_dir from estrs to cstrs. Issue #855Brian Anderson-2/+2
2011-09-01Check error code in rust_file_is_dir. Prevent comparison of uninitialized memBrian Anderson-1/+3
2011-09-01Remove a bunch of string builtins. Issue #855Brian Anderson-82/+0
2011-08-31Expose STDERR to rust.Erick Tryzelaar-0/+1
2011-08-29Make std::istr::push_byte efficientMarijn Haverbeke-0/+9
It used to allocate two (!) heap values per pushed byte. It now goes through a runtime function that simply grows the istr and writes the byte.
2011-08-29Factor vector reserve code in runtime into its own functionMarijn Haverbeke-7/+1
2011-08-29Implement non-internal ivecsMarijn Haverbeke-177/+45
Vectors are now similar to our old, pre-internal vectors, except that they are uniquely owned, not refcounted. Their name should probably change too, then. I've renamed them to vec in the runtime, will do so throughout the compiler later.
2011-08-19rt: Remove rustboot's GC infrastructurePatrick Walton-1/+1
2011-08-18Rename rust_vec to rust_evecBrian Anderson-5/+5
2011-08-17Making more of the rust_task structure directly accessible from Rust.Eric Holk-17/+3
2011-08-16Removed trans_comm.rs from the compiler. Updating aio/sio to work with the ↵Eric Holk-5/+0
new chan and port system, started on a networking module for the standard library.
2011-08-15Properly ref counting to fix valgrind issues on linux.Eric Holk-2/+17
2011-08-15Fixed memory accounting and task stack creation bugs.Eric Holk-3/+18
2011-08-15Working on more spawn test cases.Eric Holk-2/+10
2011-08-15Added a library version of spawn. Before long, we can remove the old version.Eric Holk-0/+31
2011-08-15Port ID-based channels.Eric Holk-0/+23
2011-08-12Rename rust_list_files_ivec to rust_list_filesBrian Anderson-1/+1
2011-08-12Remove rust_list_files from std and rtBrian Anderson-25/+0
2011-08-12Remove runtime vector builtinsBrian Anderson-84/+0
2011-08-12Remove str_from_vec runtime functionBrian Anderson-17/+0
2011-08-12Remove vec version of str::bytes, rename bytes_ivec to str::bytesBrian Anderson-26/+0
2011-08-08Introduced task handles.unknown-1/+4
This is the new way to refer to tasks in rust-land. Currently all they do is serve as a key to look up the old rust_task structure. Ideally they won't be ref counted, but baby steps.
2011-08-08Converted the rest of the task-comm-* tests over. Also fixed someEric Holk-1/+1
channel lifecycle bugs.
2011-08-05Atomic ref counting for chans.Eric Holk-1/+6
2011-08-01Added send and receive to comm library.Eric Holk-0/+30
2011-08-01Objectified library chans and ports.Eric Holk-1/+0
2011-08-01Started working on a library-based comm system. Creating and deleting ports ↵Eric Holk-0/+47
work.
2011-07-29Add sched_threads rt function to get the number of scheduler threadsBrian Anderson-0/+5
2011-07-28Do all runtime calls to getenv at initializationBrian Anderson-2/+2
getenv is not threadsafe and (maybe as a result) it's randomly crashing with CFLAGS=-g and RUST_THREADS=32. Calls from rust code are still on their own.
2011-07-28Adding a function to stdlib to set the min stack size, for programsEric Holk-0/+7
that absolutely will not succeed with a large default stack. This should be removed once we have stack grown working. Also updated word-count to succeed under the new test framework.
2011-07-27More thorough check for interior-ness in str_from_ivecMarijn Haverbeke-2/+3
Closes #750
2011-07-22More work on word-count.Eric Holk-0/+5
Updated the MapReduce protocol so that it's correct more often. It's still not perfect, but the bugs repro less often now. Also found a race condition in channel sending. The problem is that send and receive both need to refer to the _unread field in circular_buffer. For now I just grabbed the port lock to send. We can probably get around this by using atomics instead.
2011-07-21Lots of work on memory tracking and channels.Eric Holk-19/+18
We're trying to get closer to doing correct move semantics for channel operations. This involves a lot of cleanup (such as removing the unused sched parameter from rust_vec constructor) and making circular_buffer kernel_owned. Added tagging for memory allocations. This means we give a string tag to everything we allocate. If we leak something and TRACK_ALLOCATIONS is enabled, then it's much easier now to tell exactly what is leaking.
2011-07-20Add a huge hack to allow the test runner to continue if a single task leaksBrian Anderson-0/+7
This is just until unwinding works. Adds a flag to the runtime to turn the memory leak checks on task destruction into warnings instead of fatal errors. I am so sorry. Issue #428
2011-07-19Fix calculation of sizeof boxed ivec of str in rt. Closes #712Brian Anderson-1/+5
2011-07-17Revert "Add setenv to standard library"Brian Anderson-14/+0
This reverts commit 6fb168b3dbd733f6fccebd01c2e5416f800a5566.
2011-07-17Add setenv to standard libraryBrian Anderson-0/+14
2011-07-15Remove task_unsupervise from rt builtin functionsBrian Anderson-5/+0
This was an exact duplicate of the unsupervise function
2011-07-15Modify task::join to indicate how the task terminatedBrian Anderson-1/+6
This involves sticking yet another field into the task structure
2011-07-14Add an unsupervise builtin and function to std::taskBrian Anderson-0/+5
Calling task::unsupervise de-parents the current task, with the result that failures do not propogate up the task tree.
2011-07-13Prohibit trailing whitespace under 'tidy' script. Clean up all caught cases.Graydon Hoare-1/+1
2011-07-13Trim a few more fail(1)s, not sure how they slipped past.Graydon Hoare-3/+3
2011-07-13Remove obsolete nargs counts from runtime.Graydon Hoare-17/+17
2011-07-13Attempt to correct buggy win32 timer code (causing tinderbox failures).Graydon Hoare-1/+1
2011-07-12stdlib: Move fs over to interior vectors by introducing a ↵Patrick Walton-1/+39
rust_list_files_ivec builtin
2011-07-08stdlib: Implement str::unsafe_from_bytes_ivec()Patrick Walton-0/+20
2011-07-07Fixed two races.Eric Holk-0/+5
The first is that the memory_region destructor would complain there is still an outstanding allocation. This is because circular_buffer from rust_chan wasn't refing its task, so the task was being destructed too soon. The second was where the program could deadlock while joining a task. The target task would die in the time between checking whether the task should block and then actually blocking. The fix is to use the target task's lock.
2011-07-07Removing the synchronized memory region from tasks.Eric Holk-5/+6
2011-07-07Removing most of the locks in rust_upcall.cpp and elsewhere.Eric Holk-5/+0
2011-07-06Allocate rust_ivec buffers out of the kernel poolRob Arnold-0/+60
The duplication of upcalls is due to the fact that the runtime is shared between stage0/rustc and stage1/rustc. Once snapshots are updated, they should be de-duplicated.