Releases: nanovms/nanos
Releases · nanovms/nanos
0.1.50
What's Changed
- E2E tests: ruby: remove sinatra gem install and GEM_HOME env var by @francescolavra in #1990
- cloud_init: fix errors when loaded before acquiring IP address by @francescolavra in #1992
- ELF exec: add AT_BASE entry to auxiliary vector by @francescolavra in #1991
- Kernel heaps: add page heap by @francescolavra in #1994
- Strings: remove unbounded memory access by @francescolavra in #1995
- Hyper-V: netvsc: fix setting of pbuf length in received packets by @francescolavra in #1997
- Klibs (x86_64): add User-Managed Concurrency Groups by @francescolavra in #1996
- Memory leak fixes by @francescolavra in #2001
- virtIO fixes by @francescolavra in #2002
- Security: add kernel address space layout randomization (KASLR) by @francescolavra in #2004
- Syscalls: add support for memfd_create by @francescolavra in #2005
- Closures: add closure struct definition to closure_type() macro by @francescolavra in #2006
- tmpfs_create(): add missing initialization of return value by @francescolavra in #2009
- uname: add configurability of sysname and release by @francescolavra in #2008
- Klibs: add DigitalOcean metrics agent by @francescolavra in #2007
- Fixing linker warnings by @francescolavra in #2012
Full Changelog: 0.1.49...0.1.50
0.1.49
0.1.48
0.1.47
stage2, uefi: allocate untyped buffers from tagged region This addresses a long-standing bug in targets that use a rewind tag for values (specifically the stage2 and uefi bootloaders), whereby an untyped buffer allocation was being allocated without creating space for the tag type. This could manifest in an incorrect tag type being read for a buffer. To remedy this, an additional tagged region heap is created of type tag_unknown, and untyped buffer values (currently only coming from decode_value() when using an old TFS encoding for backward compatibility) are allocated from that heap.
0.1.46
0.1.45
netlink RTM_GETADDR: add support for AF_INET6 and AF_UNSPEC This adds netlink support for reporting IPv6 interface addresses via the RTM_GETADDR request. It also handles the AF_UNSPEC address family by reporting both IPv4 and IPv6 addresses.
0.1.44
ATA: honor maximum number of sectors in each I/O request This commit adds a new function to the ATA disk driver to retrieve the maxiumum number of sectors that can be submitted in a single I/O request, which depends on whether LBA48 addressing is supported. This new function is called by both the x86_64 bootloader and the kernel ATA PCI driver, which check the maximum sector count value to split each I/O request so that it doesn't exceed the limit. This fixes booting on vsphere VMs with IDE disk emulation.
0.1.43
Klibs: AWS CloudWatch: add support for sending logs This change implements a new console driver that sends log messages to AWS CloudWatch when Nanos runs on an AWS instance. This feature is enabled by loading the cloudwatch and tls klibs and adding a "logging" tuple to the "cloudwatch" tuple in the root tuple. The "logging" tuple may contain the following attributes: - "log_group": specifies the CloudWatch log group to which log messages should be sent; if not present, the log group is derived from the image name (taken from the environment variables), or from the name of the user program if no IMAGE_NAME environment variable is present - "log_stream": specifies the CloudWatch log stream to which log messages should be sent; if not present, the log stream is derived from an instance identifier (e.g. 'ip-172-31-23-224.us-west-1.compute.internal') The log group and the log stream are automatically created if not existing. In order for the cloudwatch klib to retrieve the appropriate credentials needed to communicate with the CloudWatch Logs server, the AWS instance on which it runs must be associated to an IAM role with the CloudWatchAgentServerPolicy, which must grant permissions for the logs:PutLogEvents, logs:CreateLogGroup, and logs:CreateLogStream actions, as described in https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html Example contents of Ops configuration file: ``` "ManifestPassthrough": { "cloudwatch": { "logging": {"log_group":"my_log_group","log_stream":"my_log_stream"} } } ```
0.1.42
TFS: inflate existing file extents, eliminate extent size maximum When file data is being written beyond the range of an existing file extent, if the storage space adjacent to the extent is free, the extent can be extended to cover additional storage space, instead of creating a new extent; this keeps the amount of file metadata down and minimizes the number of disk I/O requests being used to transfer a given amount of data. The existing maximum limit of 1 MB on extent creation is no longer necessary and is being removed. Since allocations from the storage space are aligned to the allocation size, requesting large extents can create large unallocated ranges in the storage space; in order to be able to fill these ranges when requesting a new extent that does not fit into a single contiguous storage area, the create_extent() function upon allocation failure retries an allocation with a smaller size (down to a 1MB limit); the code that calls this function has been amended to properly handle the cases where the size of a created extent is smaller than requested.
0.1.41
clone(2): fix check for attempts to create new process The existing clone(2) syscall implementation was detecting whether the user program is trying to create a new process by checking the child_stack argument against a null value. This logic is based on the fact that the glibc fork() wrapper that is provided as part of the NPTL threading implementation invokes clone(2) with child_stack set to 0. However, it is possible to create a new process even if child_stack is non-zero: notably, the posix_spawn() implementation in glibc invokes clone() with a valid stack pointer, which is later unmapped by the parent process after the child starts executing the newly created process. The correct way for clone(2) to detect an attempt to create a new process is by checking for the CLONE_THREAD flag.