Skip to content
This repository has been archived by the owner on Sep 21, 2021. It is now read-only.

Releases: reswitched/libtransistor

libtransistor v2.1.1

11 Sep 23:02
Compare
Choose a tag to compare

Changelog

Additions

  • Added trn_recursive_mutex_interrupt_lock
  • Various SVC bindings

Changes

  • trn_result_to_errno now uses trn_lookup_result
  • KDebug inherits from KWaitable

Bugfixes

  • Waiter deadlocks/delays
  • Lifetime bug in C++ Waiter bindings

libtransistor v2.1.0

23 Aug 01:09
Compare
Choose a tag to compare

Changelog

Additions

  • Added support for deferring IPCServer++ responses
  • Added support for InHandle, OutHandle, and InObject to IPCClient++
  • Added KTransferMemory
  • Added default constructor for KObject
  • Added _TRN_RUNCONF_STDIO_OVERRIDE_TWILI
  • Added include/libtransistor/cpp/nx.hpp
  • Added trn::svc::MapTransferMemory and trn::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 from std::runtime_exception
  • Many warnings
  • Fixed issues with libc++, atomics, and [[noreturn]]

libtransistor v2.0.0

19 Jul 21:00
Compare
Choose a tag to compare

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 and trn_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 (replaces find_empty_memory_block)
  • added fatal service bindings
  • added process handle key to loader_config
  • added SECONDS_TO_NANOSECONDS, ASSERT_OK, TRACE, and DBG_TRACE macros
  • added ipc_helpers
  • added ipc_debug_level (replaces ipc_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 to trn_file_t
  • enabled thread safety analysis, and thread safety for a few modules
  • ipc_server now uses waiter
  • sm_force_finalize is now public
  • trn_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 calls dbg_printf instead of printf when discarding errors
  • supported ipc messages with raw data sizes that are not multiples of 4
  • svc.h now includes types.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 checking file->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

15 Jun 01:54
Compare
Choose a tag to compare
Pre-release

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

31 May 19:59
207deca
Compare
Choose a tag to compare
Pre-release

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 and trn_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 (replaces find_empty_memory_block)
  • added fatal service bindings
  • added process handle key to loader_config
  • added SECONDS_TO_NANOSECONDS, ASSERT_OK, TRACE, and DBG_TRACE macros
  • added ipc_helpers
  • added ipc_debug_level (replaces ipc_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 to trn_file_t
  • enabled thread safety analysis, and thread safety for a few modules
  • ipc_server now uses waiter
  • sm_force_finalize is now public
  • trn_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 calls dbg_printf instead of printf when discarding errors
  • supported ipc messages with raw data sizes that are not multiples of 4
  • svc.h now includes types.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 checking file->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

24 May 00:46
Compare
Choose a tag to compare

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

16 Mar 23:41
Compare
Choose a tag to compare

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 and LIBTRANSISTOR_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

07 Mar 05:16
Compare
Choose a tag to compare

Changelog:

  • add dbg_connect to make debugging under HBL easier
  • fix handle leak in hid_finalize
  • fix find_unmapped_block
  • fix relocate having a dbg_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

06 Mar 03:55
Compare
Choose a tag to compare

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 as make 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

05 Mar 23:30
Compare
Choose a tag to compare

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 as make 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.