Skip to content

Releases: pointertobios/asco

ASCO 0.3.0 Pre-release

04 Dec 08:01

Choose a tag to compare

Pre-release

A new remake version

Full Changelog: https://github.com/pointertobios/asco/commits/0.3.0-pre

ASCO 0.2.1

08 Sep 15:52

Choose a tag to compare

Fixes

  • Segfault when destroy cloned coroutines
  • File IO options sometime blocked
  • SLUB sometime allocated nullptr

Full Changelog: 0.2.0...0.2.1

ASCO 0.2.0

07 Sep 16:01

Choose a tag to compare

scheduled unstable

Features

  • inline_future.dispatch()
  • Type safety flags
  • True void type support for future
  • placement_list
  • block_read_writer
  • SLUB memory pool

Fix

  • Worker maps use unordered_map
  • File IO randomly crash
  • Some other randomly crashing

Improvement

  • Use spin instead of mutex in inner::channel
  • Add noexcept for spin and rwspin
  • Remove customizable runtime
  • Normalize file API
  • New member in buffer
  • On performance, compactibility and also correcting some misusing
  • More template extern specialization
  • Improve many techical debt

Full Changelog: 0.1.1...0.2.0

ASCO 0.1.1

20 Jun 14:37

Choose a tag to compare

Features

  • Exception asco::coroutine_abort
  • New future.exceptionally definition
  • Target for choice of async main function or sync main function
  • SSO for zero copy buffer

Improvements and Fixes

  • Monopolized timer and io thread
  • Add multi producer single consumer channel for inner util, and use it for task dispatching

Full Changelog: 0.1.0...0.1.1

ASCO 0.1.0

07 Jun 12:40

Choose a tag to compare

Features

  • Timer library: timeout and sleeps
  • Exception with stacktrace and call chain trace
  • Synchronous primitives: condition_variable, barrier and rwlock
  • Simple performance recording
  • Preparation for IO module: Zero copy buffer and stream_base
  • Asynchronous task combination: future.then() and future.exceptionally()

Improvements and Fixes

  • If select spawned to the same worker, the tasks will block because barrier. We don't need all other coroutine exited when the first selected coroutine return. Just remove the barrier.
  • select went into exception and not correctly suspend and awake task.
  • select didn't correctly remove caller coroutine.
  • Use channel to make sure the return value of coroutine didn't destructed before caller co_await it.
  • Processing of exception improved.
  • Use spin lock instead of mutex in runtime and scheduler. Their critical sections are short enough.
  • semaphore::acquire() improvement: break out of CAS loop after suspend.
  • If sub coroutine had not been co_await, once the caller exit, the stacktrace in sub coroutine will crash due to segfault. Now move trace info to coro_local_frame.

License change to MIT from GPLv3

Full Changelog: 0.0.3...0.1.0

ASCO 0.0.3

02 May 16:10

Choose a tag to compare

Features

  • Interval
  • select<N>: Fetch return value of the first returned coroutine and abort rest coroutines
  • Recursing abort

Improvements & Fixes

  • Exception passing correctly

Full Changelog: 0.0.2...0.0.3

ASCO 0.0.2

21 Apr 14:26

Choose a tag to compare

Features

  • Channel(Pipe): Simple Producer Simple Consumer
  • Coroutine Local Frame Lazy Destroy

Fixes

  • Semaphore incorrectly sleep and never been awaken.

Full Changelog: 0.0.1...0.0.2

ASCO 0.0.1

17 Apr 14:06

Choose a tag to compare

Basic asynchronous environment

  • Peer coroutines: Crated by scheduler and work as partner with each other.
  • Inline coroutines (Non-peer coroutines): Calling the callees and returning to caller with symmetrical transformation.
  • Abortable coroutines: future<T>::abort() function with recover semantic. The aborted coroutine must recover the affected object to the state before the coroutine started.
  • Coroutine local variables: Variables with its lifetime spreading with the coroutine calling chain.

Synchronization primitives

  • Semaphore