Releases: reswitched/libtransistor
libtransistor v2.1.1
Changelog
Additions
- Added
trn_recursive_mutex_interrupt_lock - Various SVC bindings
Changes
trn_result_to_errnonow usestrn_lookup_resultKDebuginherits fromKWaitable
Bugfixes
- Waiter deadlocks/delays
- Lifetime bug in C++ Waiter bindings
libtransistor v2.1.0
Changelog
Additions
- Added support for deferring
IPCServer++responses - Added support for
InHandle,OutHandle, andInObjecttoIPCClient++ - Added
KTransferMemory - Added default constructor for
KObject - Added
_TRN_RUNCONF_STDIO_OVERRIDE_TWILI - Added
include/libtransistor/cpp/nx.hpp - Added
trn::svc::MapTransferMemoryandtrn::svc::MapSharedMemory - Added
trn::svc::QueryMemory - Added
env_get_stack_top - Added bindings for
ITwiliService#CreateNamedPipe - Added
trn::as::Reservation - Added
trn_lookup_result
Removals
- Removed some old debug messages
- Removed
ipcClients.h
Changes
- Refactored
crt0_common - Made
include/libtransistor/nx.hmore complete - When building libtransistor, libtransistor headers are now included with
-Iso that warnings are not suppressed - Makefile object/header listings are now alphabetical
- Each source file now includes its most relevant header before any others to ensure header files' dependencies are properly included.
Bugfixes
- Made
trn::ResultErrorinherit publicly fromstd::runtime_exception - Many warnings
- Fixed issues with libc++, atomics, and
[[noreturn]]
libtransistor v2.0.0
Changelog
Additions
- added dynamic linker,
dlopen,dlsym, etc. - added C++ API (see twili for examples of this API in action)
- including templated IPC client/server
- added 1.0.0 support
- added
trn_threadandtrn_mutexlibrary - added
svcMapProcessCodeMemory,svcUnmapProcessCodeMemory,svcSetProcessMemoryPermission - added
svcCreateProcess,svcStartProcess - added
svcMapPhysicalMemory,svcUnmapPhysicalMemory - added resource limit, debug SVCs
- added
usbbindings - added
asmodule, for managing address space (replacesfind_empty_memory_block) - added
fatalservice bindings - added process handle key to
loader_config - added
SECONDS_TO_NANOSECONDS,ASSERT_OK,TRACE, andDBG_TRACEmacros - added
ipc_helpers - added
ipc_debug_level(replacesipc_debug_flag)' - added
collections/list.h - added
waiter - added twili integration
- added
runtime_config - added hid_controller button state masks,
hid_controller_buttons_down - added
nvhost_ioctl_ctrl_syncpt_wait - added
surface_wait_buffer - added
fsp_srv_open_bis_filesystem - added NRO ASET sections for metadata and icons
- added
env_get_kernel_version()
Removals
- removed
ace_loader - removed
alloc_pagesand heap remapping system - removed
main_thread = 0xde00hack - removed
test_multiple_set_heap_size
Changes
- we now use display layers obtained from
amwherever possible (fixes drawing over lock screen and fixes screenshots) - redid
file_operations_tto not be copied from the Linux kernel, and for consistency with other libtransistor filesystem APIs - moved
loader_configfunctions into their own file - we now send type 2 message before closing IPC services
- change
struct filetotrn_file_t - enabled thread safety analysis, and thread safety for a few modules
ipc_servernow useswaitersm_force_finalizeis now publictrn_mountfs_mounttakes inode by value- removed
restrictfrom bsd headers
Bugfixes
- made
ipc_servercheck that it has the SVCs it needs - we now initialize all
loader_configfields - fixed syscall missing error code number collisions
trn_result_to_errnonow callsdbg_printfinstead ofprintfwhen discarding errors- supported ipc messages with raw data sizes that are not multiples of 4
svc.hnow includestypes.h- fixed missing
__malloc_lockand__malloc_unlock - fixed uninitialized variable usage in
syscalls.c - added missing typedef in
graphic_buffer_queue.h - fixed
fd_file_putnot checkingfile->ops.release != NULL - fixed PID unpacking in PIC
- removed some ancient debug messages
- fixed terrible QueueBuffer transactions
- fixed bss clearing
Misc/CI
- moved support libraries into
libtransistor-base - run tests with
--initialize-memory - use container infrastructure
- added instructions to README for installing squashfs on osx
Version Support
| Version | Support |
|---|---|
| 1.0.0 | Tested working |
| 2.0.0 | Expected working |
| 2.1.0 - 2.3.0 | Expected working |
| 3.0.0 | Tested working |
| 3.0.1 - 4.0.1 | Unknown |
| 4.1.0 | Unknown |
| 5.0.0 - 5.0.1 | Expected working |
| 5.0.2 | Expected working |
libtransistor v2.0.0-rc2
Changelog
Additions
- added
fsp_srv_open_bis_filesystem - added NRO ASET sections for metadata and icons
Changes
- removed
restrictfrom bsd headers
libtransistor v2.0.0-rc1
Changelog
Additions
- added dynamic linker,
dlopen,dlsym, etc. - added C++ API (see twili for examples of this API in action)
- including templated IPC client/server
- added
trn_threadandtrn_mutexlibrary - added
svcMapProcessCodeMemory,svcUnmapProcessCodeMemory,svcSetProcessMemoryPermission - added
svcCreateProcess,svcStartProcess - added
svcMapPhysicalMemory,svcUnmapPhysicalMemory - added resource limit, debug SVCs
- added
usbbindings - added
asmodule, for managing address space (replacesfind_empty_memory_block) - added
fatalservice bindings - added process handle key to
loader_config - added
SECONDS_TO_NANOSECONDS,ASSERT_OK,TRACE, andDBG_TRACEmacros - added
ipc_helpers - added
ipc_debug_level(replacesipc_debug_flag)' - added
collections/list.h - added
waiter - added twili integration
- added
runtime_config - added hid_controller button state masks,
hid_controller_buttons_down - added
nvhost_ioctl_ctrl_syncpt_wait - added
surface_wait_buffer
Removals
- removed
ace_loader - removed
alloc_pagesand heap remapping system - removed
main_thread = 0xde00hack - removed
test_multiple_set_heap_size
Changes
- we now use display layers obtained from
amwherever possible (fixes drawing over lock screen and fixes screenshots) - redid
file_operations_tto not be copied from the Linux kernel, and for consistency with other libtransistor filesystem APIs - moved
loader_configfunctions into their own file - we now send type 2 message before closing IPC services
- change
struct filetotrn_file_t - enabled thread safety analysis, and thread safety for a few modules
ipc_servernow useswaitersm_force_finalizeis now publictrn_mountfs_mounttakes inode by value
Bugfixes
- made
ipc_servercheck that it has the SVCs it needs - we now initialize all
loader_configfields - fixed syscall missing error code number collisions
trn_result_to_errnonow callsdbg_printfinstead ofprintfwhen discarding errors- supported ipc messages with raw data sizes that are not multiples of 4
svc.hnow includestypes.h- fixed missing
__malloc_lockand__malloc_unlock - fixed uninitialized variable usage in
syscalls.c - added missing typedef in
graphic_buffer_queue.h - fixed
fd_file_putnot checkingfile->ops.release != NULL - fixed PID unpacking in PIC
- removed some ancient debug messages
- fixed terrible QueueBuffer transactions
Misc/CI
- moved support libraries into
libtransistor-base - run tests with
--initialize-memory - use container infrastructure
- added instructions to README for installing squashfs on osx
Version Support
| Version | Support |
|---|---|
| 1.0.0 | Unsupported |
| 2.0.0 | Expected working |
| 2.1.0 - 2.3.0 | Expected working |
| 3.0.0 | Tested working |
| 3.0.1 - 4.0.1 | Unknown |
| 4.1.0 | Tested broken |
| 5.0.0 - 5.0.1 | Expected working |
| 5.0.2 | Expected working |
libtransistor v1.2.3
Version support:
| Version | Support |
|---|---|
| 1.0.0 | Unsupported |
| 2.0.0 | Tested working |
| 2.1.0 - 2.3.0 | Expected working |
| 3.0.0 | Tested working |
| 3.0.1 - 4.0.1 | Unknown |
| 4.1.0 | Tested broken |
| 5.0.0 - 5.0.1 | Expected working |
| 5.0.2 | Tested working |
Changelog:
- support for 5.0.2
- fix linking on lld 6.0.0
- ignore unknown dynamic entries
libtransistor v1.2.2
Changelog:
- Fixed travis builds for pull requests
- Removed crt0 cleanup kludge (replaced with trn_dirty_exit)
- Fixed initial heap size detection (fixes Yuzu compatibility)
- Moved setjmp for exit earlier, so
exit()can be called much earlier without causing a segfault - Fixed
LIBTRANSISTOR_NRO_DEPSandLIBTRANSISTOR_NSO_DEPSin libtransistor.mk - ace_loader will backup and restore registers from homebrew
- printf in threads is broken at the moment, so test_ipc_server has to use
dbg_printf
libtransistor v1.2.1
Changelog:
- add
dbg_connectto make debugging under HBL easier - fix handle leak in
hid_finalize - fix
find_unmapped_block - fix
relocatehaving adbg_printfcall - remove hexdump on IPC failure
- fix clean/distclean in Makefile
- use three graphic buffers instead of two to avoid frame skipping, tearing, and delays
libtransistor v1.2.0
Changelog:
- C++ support (including exceptions and libc++)
- Improved nxodance, resulting in more stable linking (link script and elf2nxo.py)
- Redo memory management to use alloc_pages
- Split ace_loader into wk_ace and sysmod_ace (for running applications under the WifiWebAuth applet if you're not using the Homebrew Launcher, you'll want wk_ace)
- More socket syscalls
- Add hexdump_dbg
- Expand socket buffer size
- Initialization guards
- Fix fputs, fwrite, etc. for stdio
- Reorganize build system for binary packaging
- SD card support!
[NEW] Instructions for using dist tarballs:
Download libtransistor_v1.2.0.tar.gz and extract it. Set LIBTRANSISTOR_HOME to wherever you extracted it, like so:
$ cd
$ mkdir libtransistor_dist
$ cd libtransistor_dist
$ tar xf libtransistor_v1.2.0.tar.gz
$ export LIBTRANSISTOR_HOME=$HOME/libtransistor_dist
Next, make sure you have all the packages listed below for your distro installed. You should be ready to build applications with libtransistor.
Distro-specific notes:
- Ubuntu Xenial:
sudo apt install llvm-5.0 clang-5.0 lld-5.0 python3-pyelftools python3-pippip3 install lz4- You will need to run
makeasmake LLVM_POSTFIX=-5.0
- Ubuntu Bionic:
sudo apt install llvm clang lld python3-pyelftools python3-lz4 make
- Arch Linux:
sudo pacman -S make llvm clang lld python3 python-pyelftools python-pippip3 install lz4 --user(alternatively, install python-lz4 from the AUR)
- Mac OSX:
- ??? to be determined
[NEW] Changes in building from source:
The new build system builds libraries in build/ and installs them in dist/. After these latest changes and running git submodule update, if you had a version of libtransistor before the build system change, you may want to run make distclean to delete these old files, as they may break the build process.
All libraries and support files will be installed into dist/. LIBTRANSISTOR_HOME should point to this /path/to/libtransistor/dist directory, not the /path/to/libtransistor/ directory. The contents of this dist directory can be moved wherever you want them, and is what the release tarballs are based off of.
Emulation notes:
Applications built with libtransistor v1.2.0 are currently broken under Yuzu. This is caused by incorrect handling of svcSetHeapSize and svcGetInfo for the NEW_MAP_REGION keys.
libtransistor v1.2.0 release candidate 2
Changelog:
- C++ support (including exceptions and libc++)
- Improved nxodance, resulting in more stable linking (link script and elf2nxo.py)
- Redo memory management to use alloc_pages
- Split ace_loader into wk_ace and sysmod_ace (for running applications under the WifiWebAuth applet if you're not using the Homebrew Launcher, you'll want wk_ace)
- More socket syscalls
- Add hexdump_dbg
- Expand socket buffer size
- Initialization guards
- Fix fputs, fwrite, etc. for stdio
- Reorganize build system for binary packaging
- SD card support!
[NEW] Instructions for using dist tarballs:
Download libtransistor_v1.2.0-rc2.tar.gz and extract it. Set LIBTRANSISTOR_HOME to wherever you extracted it, like so:
$ cd
$ mkdir libtransistor_dist
$ cd libtransistor_dist
$ tar xf libtransistor_v1.2.0-test4.tar.gz
$ export LIBTRANSISTOR_HOME=$HOME/libtransistor_dist
Next, make sure you have all the packages listed below for your distro installed. You should be ready to build applications with libtransistor.
Distro-specific notes:
- Ubuntu Xenial:
sudo apt install llvm-5.0 clang-5.0 lld-5.0 python3-pyelftools python3-pippip3 install lz4- You will need to run
makeasmake LLVM_POSTFIX=-5.0
- Ubuntu Bionic:
sudo apt install llvm clang lld python3-pyelftools python3-lz4 make
- Arch Linux:
sudo pacman -S make llvm clang lld python3 python-pyelftools python-pippip3 install lz4 --user(alternatively, install python-lz4 from the AUR)
- Mac OSX:
- ??? to be determined
[NEW] Changes in building from source
The new build system builds libraries in build/ and installs them in dist/. After these latest changes and running git submodule update, if you had a version of libtransistor before the build system change, you may want to run make distclean to delete these old files, as they may break the build process.
All libraries and support files will be installed into dist/. LIBTRANSISTOR_HOME should point to this /path/to/libtransistor/dist directory, not the /path/to/libtransistor/ directory. The contents of this dist directory can be moved wherever you want them, and is what the release tarballs are based off of.