Releases: reswitched/libtransistor
libtransistor v2.1.1
Changelog
Additions
- Added
trn_recursive_mutex_interrupt_lock
- Various SVC bindings
Changes
trn_result_to_errno
now usestrn_lookup_result
KDebug
inherits 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
, andInObject
toIPCClient++
- Added
KTransferMemory
- Added default constructor for
KObject
- Added
_TRN_RUNCONF_STDIO_OVERRIDE_TWILI
- Added
include/libtransistor/cpp/nx.hpp
- Added
trn::svc::MapTransferMemory
andtrn::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.h
more complete - When building libtransistor, libtransistor headers are now included with
-I
so 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::ResultError
inherit 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_thread
andtrn_mutex
library - added
svcMapProcessCodeMemory
,svcUnmapProcessCodeMemory
,svcSetProcessMemoryPermission
- added
svcCreateProcess
,svcStartProcess
- added
svcMapPhysicalMemory
,svcUnmapPhysicalMemory
- added resource limit, debug SVCs
- added
usb
bindings - added
as
module, for managing address space (replacesfind_empty_memory_block
) - added
fatal
service bindings - added process handle key to
loader_config
- added
SECONDS_TO_NANOSECONDS
,ASSERT_OK
,TRACE
, andDBG_TRACE
macros - 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_pages
and heap remapping system - removed
main_thread = 0xde00
hack - removed
test_multiple_set_heap_size
Changes
- we now use display layers obtained from
am
wherever possible (fixes drawing over lock screen and fixes screenshots) - redid
file_operations_t
to not be copied from the Linux kernel, and for consistency with other libtransistor filesystem APIs - moved
loader_config
functions into their own file - we now send type 2 message before closing IPC services
- change
struct file
totrn_file_t
- enabled thread safety analysis, and thread safety for a few modules
ipc_server
now useswaiter
sm_force_finalize
is now publictrn_mountfs_mount
takes inode by value- removed
restrict
from bsd headers
Bugfixes
- made
ipc_server
check that it has the SVCs it needs - we now initialize all
loader_config
fields - fixed syscall missing error code number collisions
trn_result_to_errno
now callsdbg_printf
instead ofprintf
when discarding errors- supported ipc messages with raw data sizes that are not multiples of 4
svc.h
now includestypes.h
- fixed missing
__malloc_lock
and__malloc_unlock
- fixed uninitialized variable usage in
syscalls.c
- added missing typedef in
graphic_buffer_queue.h
- fixed
fd_file_put
not 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
restrict
from 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_thread
andtrn_mutex
library - added
svcMapProcessCodeMemory
,svcUnmapProcessCodeMemory
,svcSetProcessMemoryPermission
- added
svcCreateProcess
,svcStartProcess
- added
svcMapPhysicalMemory
,svcUnmapPhysicalMemory
- added resource limit, debug SVCs
- added
usb
bindings - added
as
module, for managing address space (replacesfind_empty_memory_block
) - added
fatal
service bindings - added process handle key to
loader_config
- added
SECONDS_TO_NANOSECONDS
,ASSERT_OK
,TRACE
, andDBG_TRACE
macros - 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_pages
and heap remapping system - removed
main_thread = 0xde00
hack - removed
test_multiple_set_heap_size
Changes
- we now use display layers obtained from
am
wherever possible (fixes drawing over lock screen and fixes screenshots) - redid
file_operations_t
to not be copied from the Linux kernel, and for consistency with other libtransistor filesystem APIs - moved
loader_config
functions into their own file - we now send type 2 message before closing IPC services
- change
struct file
totrn_file_t
- enabled thread safety analysis, and thread safety for a few modules
ipc_server
now useswaiter
sm_force_finalize
is now publictrn_mountfs_mount
takes inode by value
Bugfixes
- made
ipc_server
check that it has the SVCs it needs - we now initialize all
loader_config
fields - fixed syscall missing error code number collisions
trn_result_to_errno
now callsdbg_printf
instead ofprintf
when discarding errors- supported ipc messages with raw data sizes that are not multiples of 4
svc.h
now includestypes.h
- fixed missing
__malloc_lock
and__malloc_unlock
- fixed uninitialized variable usage in
syscalls.c
- added missing typedef in
graphic_buffer_queue.h
- fixed
fd_file_put
not 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_DEPS
andLIBTRANSISTOR_NSO_DEPS
in 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_connect
to make debugging under HBL easier - fix handle leak in
hid_finalize
- fix
find_unmapped_block
- fix
relocate
having adbg_printf
call - 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-pip
pip3 install lz4
- You will need to run
make
asmake 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-pip
pip3 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-pip
pip3 install lz4
- You will need to run
make
asmake 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-pip
pip3 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.