Skip to content

Releases: nanovms/nanos

0.1.50

08 Apr 03:04
Compare
Choose a tag to compare
0.1.50 Pre-release
Pre-release

What's Changed

Full Changelog: 0.1.49...0.1.50

0.1.49

18 Jan 16:41
5371b48
Compare
Choose a tag to compare
0.1.49 Pre-release
Pre-release

0.1.49

0.1.48

28 Oct 03:48
a374595
Compare
Choose a tag to compare
0.1.48 Pre-release
Pre-release
bump mac dep (#1957)

Co-authored-by: Ian Eyberg <eyberg@Ians-MacBook-Pro.local>

0.1.47

24 Aug 17:11
Compare
Choose a tag to compare
0.1.47 Pre-release
Pre-release
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

18 Jul 23:53
Compare
Choose a tag to compare
0.1.46 Pre-release
Pre-release
getsockopt(): add support for SO_DOMAIN

This socket option at the SOL_SOCKET level contains the socket
domain value (e.g. AF_INET or AF_INET6).

0.1.45

13 Jun 19:32
Compare
Choose a tag to compare
0.1.45 Pre-release
Pre-release
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

20 Mar 03:15
Compare
Choose a tag to compare
0.1.44 Pre-release
Pre-release
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

13 Dec 14:50
Compare
Choose a tag to compare
0.1.43 Pre-release
Pre-release
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

31 Aug 15:01
Compare
Choose a tag to compare
0.1.42 Pre-release
Pre-release
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

06 Jun 19:24
Compare
Choose a tag to compare
0.1.41 Pre-release
Pre-release
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.