Commit graph

390645 commits

Author SHA1 Message Date
ryoon
baa195e7da doc: Updated lang/nim to 2.0.0 2023-11-23 16:41:47 +00:00
ryoon
6e0a813b41 nim: Update to 2.0.0
Changelog:
# v2.0.0 - 2023-08-01

Version 2.0 is a big milestone with too many changes to list them all here.

For a full list see [details](changelog_2_0_0_details.html).


## New features

### Better tuple unpacking

Tuple unpacking for variables is now treated as syntax sugar that directly
expands into multiple assignments. Along with this, tuple unpacking for
variables can now be nested.

```nim
proc returnsNestedTuple(): (int, (int, int), int, int) = (4, (5, 7), 2, 3)

# Now nesting is supported!
let (x, (_, y), _, z) = returnsNestedTuple()

```

### Improved type inference

A new form of type inference called [top-down inference](https://nim-lang.github.io/Nim/manual_experimental.html#topminusdown-type-inference) has been implemented for a variety of basic cases.

For example, code like the following now compiles:

```nim
let foo: seq[(float, byte, cstring)] = @[(1, 2, "abc")]
```

### Forbidden Tags

[Tag tracking](https://nim-lang.github.io/Nim/manual.html#effect-system-tag-tracking) now supports the definition
of forbidden tags by the `.forbids` pragma which can be used to disable certain effects in proc types.

For example:

```nim

type IO = object ## input/output effect
proc readLine(): string {.tags: [IO].} = discard
proc echoLine(): void = discard

proc no_IO_please() {.forbids: [IO].} =
  # this is OK because it didn't define any tag:
  echoLine()
  # the compiler prevents this:
  let y = readLine()

```

### New standard library modules

The famous `os` module got an overhaul. Several of its features are available
under a new interface that introduces a `Path` abstraction. A `Path` is
a `distinct string`, which improves the type safety when dealing with paths, files
and directories.

Use:

- `std/oserrors` for OS error reporting.
- `std/envvars` for environment variables handling.
- `std/paths` for path handling.
- `std/dirs` for directory creation/deletion/traversal.
- `std/files` for file existence checking, file deletions and moves.
- `std/symlinks` for symlink handling.
- `std/appdirs` for accessing configuration/home/temp directories.
- `std/cmdline` for reading command line parameters.

### Consistent underscore handling

The underscore identifier (`_`) is now generally not added to scope when
used as the name of a definition. While this was already the case for
variables, it is now also the case for routine parameters, generic
parameters, routine declarations, type declarations, etc. This means that the following code now does not compile:

```nim
proc foo(_: int): int = _ + 1
echo foo(1)

proc foo[_](t: typedesc[_]): seq[_] = @[default(_)]
echo foo[int]()

proc _() = echo "_"
_()

type _ = int
let x: _ = 3
```

Whereas the following code now compiles:

```nim
proc foo(_, _: int): int = 123
echo foo(1, 2)

proc foo[_, _](): int = 123
echo foo[int, bool]()

proc foo[T, U](_: typedesc[T], _: typedesc[U]): (T, U) = (default(T), default(U))
echo foo(int, bool)

proc _() = echo "one"
proc _() = echo "two"

type _ = int
type _ = float
```

### JavaScript codegen improvement

The JavaScript backend now uses [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)
for 64-bit integer types (`int64` and `uint64`) by default. As this affects
JS code generation, code using these types to interface with the JS backend
may need to be updated. Note that `int` and `uint` are not affected.

For compatibility with [platforms that do not support BigInt](https://caniuse.com/bigint)
and in the case of potential bugs with the new implementation, the
old behavior is currently still supported with the command line option
`--jsbigint64:off`.


## Docgen improvements

`Markdown` is now the default markup language of doc comments (instead
of the legacy `RstMarkdown` mode). In this release we begin to separate
RST and Markdown features to better follow specification of each
language, with the focus on Markdown development.
See also [the docs](https://nim-lang.github.io/Nim/markdown_rst.html).

* Added a `{.doctype: Markdown | RST | RstMarkdown.}` pragma allowing to
  select the markup language mode in the doc comments of the current `.nim`
  file for processing by `nim doc`:

    1. `Markdown` (default) is basically CommonMark (standard Markdown) +
        some Pandoc Markdown features + some RST features that are missing
        in our current implementation of CommonMark and Pandoc Markdown.
    2. `RST` closely follows the RST spec with few additional Nim features.
    3. `RstMarkdown` is a maximum mix of RST and Markdown features, which
        is kept for the sake of compatibility and ease of migration.

* Added separate `md2html` and `rst2html` commands for processing
  standalone `.md` and `.rst` files respectively (and also `md2tex`/`rst2tex`).

* Added Pandoc Markdown bracket syntax `[...]` for making anchor-less links.
* Docgen now supports concise syntax for referencing Nim symbols:
  instead of specifying HTML anchors directly one can use original
  Nim symbol declarations (adding the aforementioned link brackets
  `[...]` around them).
  * To use this feature across modules, a new `importdoc` directive was added.
    Using this feature for referencing also helps to ensure that links
    (inside one module or the whole project) are not broken.
* Added support for RST & Markdown quote blocks (blocks starting with `>`).
* Added a popular Markdown definition lists extension.
* Added Markdown indented code blocks (blocks indented by >= 4 spaces).
* Added syntax for additional parameters to Markdown code blocks:

       ```nim test="nim c $1"
       ...
       ```


## C++ interop enhancements

Nim 2.0 takes C++ interop to the next level. With the new [virtual](https://nim-lang.github.io/Nim/manual_experimental.html#virtual-pragma) pragma and the extended [constructor](https://nim-lang.github.io/Nim/manual_experimental.html#constructor-pragma) pragma.
Now one can define constructors and virtual procs that maps to C++ constructors and virtual methods, allowing one to further customize
the interoperability. There is also extended support for the [codeGenDecl](https://nim-lang.org/docs/manual.html#implementation-specific-pragmas-codegendecl-pragma) pragma, so that it works on types.

It's a common pattern in C++ to use inheritance to extend a library. Some even use multiple inheritance as a mechanism to make interfaces.

Consider the following example:

```cpp

struct Base {
  int someValue;
  Base(int inValue)  {
    someValue = inValue;
  };
};

class IPrinter {
public:
  virtual void print() = 0;
};
```

```nim

type
  Base* {.importcpp, inheritable.} = object
    someValue*: int32
  IPrinter* {.importcpp.} = object

const objTemplate = """
  struct $1 : public $3, public IPrinter {
    $2
  };
""";

type NimChild {.codegenDecl: objTemplate .} = object of Base

proc makeNimChild(val: int32): NimChild {.constructor: "NimClass('1 #1) : Base(#1)".} =
  echo "It calls the base constructor passing " & $this.someValue
  this.someValue = val * 2 # Notice how we can access `this` inside the constructor. It's of the type `ptr NimChild`.

proc print*(self: NimChild) {.virtual.} =
  echo "Some value is " & $self.someValue

let child = makeNimChild(10)
child.print()
```

It outputs:

```
It calls the base constructor passing 10
Some value is 20
```


## ARC/ORC refinements

With the 2.0 release, the ARC/ORC model got refined once again and is now finally complete:

1. Programmers now have control over the "item was moved from" state as `=wasMoved` is overridable.
2. There is a new `=dup` hook which is more efficient than the old combination of `=wasMoved(tmp); =copy(tmp, x)` operations.
3. Destructors now take a parameter of the attached object type `T` directly and don't have to take a `var T` parameter.

With these important optimizations we improved the runtime of the compiler and important benchmarks by 0%! Wait ... what?
Yes, unfortunately it turns out that for a modern optimizer like in GCC or LLVM there is no difference.

But! This refined model is more efficient once separate compilation enters the picture. In other words, as we think of
providing a stable ABI it is important not to lose any efficiency in the calling conventions.


## Tool changes

- Nim now ships Nimble version 0.14 which added support for lock-files. Libraries are stored in `$nimbleDir/pkgs2` (it was `$nimbleDir/pkgs` before). Use `nimble develop --global` to create an old style link file in the special links directory documented at https://github.com/nim-lang/nimble#nimble-develop.
- nimgrep now offers the option `--inContext` (and `--notInContext`), which
  allows to filter only matches with the context block containing a given pattern.
- nimgrep: names of options containing "include/exclude" are deprecated,
  e.g. instead of `--includeFile` and `--excludeFile` we have
  `--filename` and `--notFilename` respectively.
  Also, the semantics are now consistent for such positive/negative filters.
- Nim now ships with an alternative package manager called Atlas. More on this in upcoming versions.


## Porting guide

### Block and Break

Using an unnamed break in a block is deprecated. This warning will become an error in future versions! Use a named block with a named break instead. In other words, turn:

```nim

block:
  a()
  if cond:
    break
  b()

```

Into:

```nim

block maybePerformB:
  a()
  if cond:
    break maybePerformB
  b()

```

### Strict funcs

The definition of `"strictFuncs"` was changed.
The old definition was roughly: "A store to a ref/ptr deref is forbidden unless it's coming from a `var T` parameter".
The new definition is: "A store to a ref/ptr deref is forbidden."

This new definition is much easier to understand, the price is some expressitivity. The following code used to be
accepted:

```nim

{.experimental: "strictFuncs".}

type Node = ref object
  s: string

func create(s: string): Node =
  result = Node()
  result.s = s # store to result[]

```

Now it has to be rewritten to:

```nim

{.experimental: "strictFuncs".}

type Node = ref object
  s: string

func create(s: string): Node =
  result = Node(s: s)

```

### Standard library

Several standard library modules have been moved to nimble packages, use `nimble` or `atlas` to install them:

- `std/punycode` => `punycode`
- `std/asyncftpclient` => `asyncftpclient`
- `std/smtp` => `smtp`
- `std/db_common` => `db_connector/db_common`
- `std/db_sqlite` => `db_connector/db_sqlite`
- `std/db_mysql` => `db_connector/db_mysql`
- `std/db_postgres` => `db_connector/db_postgres`
- `std/db_odbc` => `db_connector/db_odbc`
- `std/md5` => `checksums/md5`
- `std/sha1` => `checksums/sha1`
- `std/sums` => `sums`
2023-11-23 16:41:31 +00:00
ryoon
3587b1ab00 doc: Updated multimedia/vlc to 3.0.20 2023-11-23 16:37:51 +00:00
ryoon
671ebc57d9 vlc: Update to 3.0.20
Changelog:
Changes between 3.0.19 and 3.0.20:
----------------------------------

Video Output:
 - Fix green line in fullscreen in D3D11 video output
 - Fix crash with some AMD drivers old versions
 - Fix events propagation issue when double-clicking with mouse wheel

Decoders:
 - Fix crash when AV1 hardware decoder fails

Interface:
 - Fix annoying disappearance of the Windows fullscreen controller

Demuxers:
 - Fix potential security issue (OOB Write) on MMS:// by checking user size bounds
2023-11-23 16:37:35 +00:00
ryoon
cc75e5f58a jack: Python 3.12 is not supported yet 2023-11-23 16:30:30 +00:00
ryoon
667e5a622d alsa-plugins-oss,alsa-plugins-pulse: Update to 1.2.7.1
Changelog:
Unavailable.
2023-11-23 16:29:34 +00:00
tsutsui
da2cda97d9 mlterm: use https for HOMEPAGE. 2023-11-23 16:20:41 +00:00
wiz
247b594284 alsa-lib: pkglint cleanup 2023-11-23 16:20:03 +00:00
tsutsui
2ebd879492 mlterm: remove obsolete NOT_FOR_PLATFORM (pre NetBSD-1.6). 2023-11-23 16:19:58 +00:00
wiz
2e8acc00c2 alsa-lib: fix endianness patch for Solaris 2023-11-23 16:19:41 +00:00
jperkin
0034b17c69 py-aiostream: Unbreak impossible DEPENDS. 2023-11-23 16:16:36 +00:00
ryoon
8f4e9186eb doc: Updated audio/alsa-utils to 1.2.10 2023-11-23 16:16:00 +00:00
ryoon
35494da5de doc: Updated audio/alsa-lib to 1.2.10 2023-11-23 16:15:30 +00:00
ryoon
39f989ddde alsa-lib, alsa-utils: Update to 1.2.10
Changelog:
1.2.10:
alsa-lib
Core

    Release v1.2.10
    Fix symver build error on non-ELF platforms
    doxygen: include docs for shmarea functions
    doxygen: silence warning from asoundlib.h
    doxygen: global: silence 'not documented' warnings
    doxygen: Fix missing group end markers
    configure: add AC_SYS_LARGEFILE
    seq: Add UMP 1.1 features
    seq: Add UMP support
    ump: Add helpers to parse / set UMP packet data
    control: Add UMP Endpoint and Block info query support
    control: Add UMP device query support
    ump: Add initial support
    include: fix SND_DLSYM_BUILD_VERSION() for static build

Config API

    doxygen: conf: silence 'not documented' warnings

Control API

    doxygen: namehint: silence 'not documented' warnings
    doxygen: control: silence 'not documented' item warnings
    doxygen: include external control docs
    reshuffle included files to include config.h as first
    control: Add UMP Endpoint and Block info query support
    control: Add UMP device query support
    remove extra trailing new line in SNDMSG and SNDERR calls

Mixer API

    topology: fix src/mixer/mixer.c return value warning
    doxygen: fix broken parameter name tags

PCM API

    doxygen: fix broken examples links
    doxygen: pcm: silence 'not documented' warnings
    doxygen: fix inadvertent link requests
    doxygen: fix broken parameter name tags
    pcm: hw: fix minor bug in sw_params ioctl
    remove extra trailing new line in SNDMSG and SNDERR calls
    pcm: hw - prevent divide by zero for broken apps

RawMidi API

    doxygen: fix broken examples links
    doxygen: rawmidi: silence 'not documented' warnings
    doxygen: fix broken parameter name tags
    rawmidi: Suppress error messages for non-fatal errors
    ump: Add UMP 1.1 features
    ump: Add helpers for handling SysEx data
    ump: Add helpers to parse / set UMP packet data
    ump: Add initial support
    rawmidi: Add UMP ioctl support

Rawmidi API

    ump: Add initial support

Sequencer API

    doxygen: seq: silence 'not documented' warnings
    seq: Fix wrong seq version update at snd_seq_hw_get_client_info()
    seq: Add overflow check in snd_seq_ev_set_ump_data()
    seq: ump: Fix typo in function name containing "group"
    seq: Add UMP 1.1 features
    seq: Add UMP support

Timer API

    doxygen: fix broken examples links

Topology API

    dogyxen: fix topology.h warnings
    doxygen: topology: silence 'not documented' warnings
    doxygen: fix inadvertent link requests
    doxygen: escape xml tags
    doxygen: Fix missing group end markers
    remove extra trailing new line in SNDMSG and SNDERR calls

Use Case Manager API

    ucm: main - remove cast to pointer from integer of different size warning
    ucm: mark internal functions static
    doxygen: ucm: silence warnings
    doxygen: fix list indentation errors
    doxygen: escape xml tags
    doxygen: fix broken parameter name tags
    usecase: add CaptureMicInfoFile field to documentation

/include/Makefile.am

    ump: Add helpers to parse / set UMP packet data
    ump: Add initial support

ALSA Lisp

    reshuffle included files to include config.h as first

ALSA Server

    reshuffle included files to include config.h as first

Async helpers

    doxygen: global: silence 'not documented' warnings

Configuration

    doxygen: conf: do not hide PCM specific function
    doxygen: conf: silence 'not documented' warnings
    doxygen: fix broken parameter name tags
    reshuffle included files to include config.h as first

Documentation

    doxygen: include docs for shmarea functions
    doxygen: namehint: silence 'not documented' warnings
    doxygen: seq: silence 'not documented' warnings
    doxygen: conf: silence 'not documented' warnings
    doxygen: include external control docs
    doxygen: fix image path

Dynamic Loader helpers

    doxygen: global: silence 'not documented' warnings
    reshuffle included files to include config.h as first

Kernel Headers

    seq: Add UMP 1.1 features
    uapi: Update rawmidi API to 2.0.4
    uapi: Update asequencer.h definitions for 1.0.3
    uapi: Update control API to 2.0.9
    uapi: Update rawmidi API to 2.0.3

MIDI 2.0 (UMP)

    ump: Add UMP 1.1 features
    ump: Add helpers for handling SysEx data
    ump: Add helpers to parse / set UMP packet data
    ump: Add initial support

SHM helpers

    doxygen: global: silence 'not documented' warnings

Test/Example code

    test: oldapi - fix the clang-16 compilation error

alsa-utils
Core

    Release v1.2.10
    github: update build.yml
    aseqdump: Add UMP support
    nhlt: add nhlt-dmic-info utility

ALSA Control (alsactl)

    alsactl: fix compilation when building in a subdir
    alsactl: fix the verbose compilation warnings for latest gcc
    alsactl: fix the copy-n-paste typo (SND_RAWMIDI_STREAM_*)
    alsactl: add define to compile with glibc 2.38

ALSA RawMidi Utility (amidi)

    reshuffle included files to include config.h as first
    amidi: fix the verbose compilation warnings for latest gcc

Audio Transfer utility

    reshuffle included files to include config.h as first
    axfer: fix the verbose compilation warnings for latest gcc

NHLT ACPI parser

    nhlt-dmic-info: fix the verbose compilation warnings for latest gcc
    nhlt: add nhlt-dmic-info utility

Speaker Test

    speaker-test: fix the verbose compilation warnings for latest gcc
    speaker-test: allow large buffer and period time setup - up to 100 seconds

aconnect

    aconnect: fix the verbose compilation warnings for latest gcc
    aconnect: Add UMP support

alsaloop

    reshuffle included files to include config.h as first
    alsaloop: fix the verbose compilation warnings for latest gcc

alsamixer

    alsamixer: fix the verbose compilation warnings for latest gcc

alsatplg (topology)

    topology: fix the verbose compilation warnings for latest gcc
    topology: plugins: nhlt: remove dmic error print
    Topology: NHLT: Intel: Update DMIC FIR coefficients
    topology: nhlt: intel: support more device types and directions
    topology: pre-processor: Add support for CombineArrays
    topology: plugins: nhlt: set dmic stereo mode only in hw version 1

alsaucm

    alsaucm: fix the verbose compilation warnings for latest gcc

amixer

    reshuffle included files to include config.h as first
    amixer: fix the verbose compilation warnings for latest gcc

aplay/arecord

    aplay: fix the verbose compilation warnings for latest gcc

aplaymidi/arecordmidi

    aplaymidi: fix the verbose compilation warnings for latest gcc
    aplaymidi: Add UMP support

aseqdump

    aseqdump: fix MIDI 2.0 code - it compiles now
    aseqdump: fix the verbose compilation warnings for latest gcc
    aseqdump: Add options to switch view mode
    aseqdump: Correct wrong channel number
    aseqdump: Align outputs of UMP MIDI 1.0 with legacy MIDI 1.0
    aseqdump: Add UMP support

aseqnet

    aseqnet: fix the verbose compilation warnings for latest gcc

bat (basic audio tester)

    bat: fix the verbose compilation warnings for latest gcc

gitcompile

    gitcompile: set more verbose compilation warnings

iecset

    iecset: fix the verbose compilation warnings for latest gcc

alsa-ucm-conf
Configuration

    mtk-rt5650: remove duplicate JackControl "Headset Jack" lines
    USB-Audio: ALC4080 - 26ce:0a08 - Z790 PG-ITX/TB4
    USB-Audio: ALC4080 - 26ce:0a06 - ASRock X670E Taichi
    tegra: Add UCM for MAX98089 based LG Optimus 4X HD and Vu
    tegra: Add UCM for WM8903 based ASUS Transformers
    tegra: Add UCM for RT5631 based ASUS Transformers
    ucm2: Rockchip: Add UCM support for ES8316 on Rock 5B
    USB-Audio: Added Universal Audio Volt 2 config
    SplitPCM: Fix Device variable in SplitPCMDevice macro
    USB-Audio: Do not use 4ch playback stream for stereo Focusrite Scarlet devices
    ucm2: USB-Audio: Add support for more Focusrite Scarlet 2-input devices
    USB-Audio: Arturia: set S32_LE format for SplitPCM
    Intel/sof-essx8336: Fix HiFi.conf
    USB-Audio: ALC4080: Add USB ID 0b05:1a5c (ASUS ROG Strix B650E-I)
    Add Asus ROG STRIX X670E-F Gaming Wifi to USB-Audio.conf
    ucm2: PinePhone: use "Mix Mono" routing for earpiece
    Add support for Steinberg UR44C
    ucm2: Qualcomm: sc8280xp: fix device numbers
    acp62: add initial support for AMD ACP v6.2 RPL
    acp63.conf: use symbolic link
    acp63: add initial support for AMD Pink Sardine - ACP63
    sof-hda-dsp: move card-init include to top
    sof-hda-dsp,sof-soundwire: add CaptureMicInfoFile fields for dmics
    sof-essx8336: Dmic is not a valid UCM device identifier, use Mic

Description

    Release v1.2.10

1.2.9:
alsa-lib
Core

    Release v1.2.9
    pcm: add new symbols to Versions.in
    configure: avoid libdl detecion on *BSD
    include: alsa-symbols.h - use newer gcc symver function attribute

Control API

    pcm: add SND_CTL_EINTR open mode

PCM API

    pcm: hw: fix the silence size setup in drain
    pcm: remove duplicate SND_PCM_HW_PARAM_{FIRST,LAST}_* #defines
    pcm: add SND_PCM_EINTR open mode
    pcm: improve handling for snd_pcm_wait()
    pcm: hw: introduce SNDRV_PCM_HW_PARAMS_DRAIN_SILENCE
    pcm: hw: introduce SNDRV_PCM_INFO_PERFECT_DRAIN
    pcm: hw: add drain_silence configuration keyword
    pcm: hw: setup explicit silencing for snd_pcm_drain by default
    compilation: fix ANDROID -> __ANDROID__ define detection
    pcm: avoid endless loop in snd_pcm_sw_params_default()
    pcm: hw - fix return code checking in snd_pcm_hw_hw_refine
    pcm: rate: fix last_commit_ptr boundary wrapping
    pcm: route/softvol use snd_config_get_ireal vs get_real to handle also integers
    pcm: fix the fast_ops pcm argument for fast_ops
    include: pcm_old.h - use a macro for the symbol versioning
    pcm: rate - correct the previous fix for snd_pcm_rate_may_wait_for_avail_min()
    pcm: rate - fix the crash in snd_pcm_rate_may_wait_for_avail_min()

Topology API

    topology: Parse ignore_suspend property for dapm widget
    topology: Add decompilation support for ignore_suspend
    topology: Parse ignore_suspend flag
    topology: ctl - remove the wrong (debug) code
    test: latency - use snd_pcm_format_physical_width()

Use Case Manager API

    compilation: fix ANDROID -> __ANDROID__ define detection
    ucm: fix geti() macro - return zero on success
    ucm: simplify and fix the previous patch (geti)
    ucm: add existence checks to geti calls
    ucm: fix possible memory leak in execute_sysw()
    ucm: execute_sysw - fix possible use-after-free
    ucm: handle empty string also for ${env:} substitution
    ucm: clarify set_defaults calls
    ucm: fix enhanced ID parsing in snd_use_case_parse_ctl_elem_id()

Compatibility routines

    type_compat.h: use ESPIPE instead of EPIPE when ESTRPIPE not defined

Configuration

    conf/emu10k1: remove compat with two decades old drivers
    compilation: fix ANDROID -> __ANDROID__ define detection
    alsa-lib: conf - fix possible use-after-free in get_char_skip_comments

Kernel Headers

    pcm: hw: introduce SNDRV_PCM_HW_PARAMS_DRAIN_SILENCE
    pcm: hw: introduce SNDRV_PCM_INFO_PERFECT_DRAIN

Test/Example code

    test: BSD-like fixes
    type_compat.h: use ESPIPE instead of EPIPE when ESTRPIPE not defined
    test: latency - --policy option - allow using SCHED_OTHER
    test: latency - add --policy option to allow using SCHED_FIFO
    test: latency - usleep should not be used in the block mode
    test: latency - add -y option (I/O usleep)
    latency: add timestamps to the POS lines
    test: latency - add more realtime tests
    test: latency - use snd_pcm_format_physical_width()

Utils

    utils/alsa.m4: include <stdlib.h> for exit()

alsa-utils
Core

    Release v1.2.9
    configure.ac: fix build without dlfcn.h
    chore: Add link to master branch on GitHub Actions
    chore: Delete .travis.yml because of using not Travis CI but GitHub Actions

/include/Makefile.am

    include: fix package - add bswap.h and os_compat.h to noinst_HEADERS

ALSA Control (alsactl)

    alsactl: fix OpenBSD compilation (add include of os_compat.h)
    Add OpenBSD support

ALSA RawMidi Utility (amidi)

    Add OpenBSD support
    amidi: restore space between bytes

Audio Transfer utility

    aplay,axfer: Replace off64_t with off_t
    axfer: fix typo in manual

alsa-info.sh

    alsa-info.sh: increase version to 0.5.3
    alsa-info.sh: uname - reduce execs by four, and eliminate a logic bug
    alsa-info.sh: Update `test` '-a' and '-o' to '&&' and '||'
    alsa-info.sh: print ctl-led list from sysfs

alsaconf

    Add Georgian translation

alsaloop

    alsaloop: fix loopcount condition
    Add OpenBSD support

alsamixer

    alsamixer: add -B,--black-background option

alsatplg (topology)

    topology: pre-processor: fix regular expression flags
    topology: pre-process-object: Expand definitions within strings
    topology: pre-process-object: Remove all trailing white space
    topology: pre-processor: support to include conf block with IncludeByKey
    topology: nhlt: intel: add support for ssp blob ver 1.5
    topology: plugins: nhlt: add ssp aux controls
    topology: propagate nhlt plugin error to main program
    topology: plugins: nhlt: fix ssp debug
    topology: nhlt: intel: ssp: fix obvious typo for 'codec_provider'
    topology: plugins: nhlt: fix ssp dai index
    topology: plugins: nhlt: add dmic dai index
    topology: plugins: fix off by 1 mem allocation error

alsaucm

    alsaucm: fix typo in docs (can can)
    alsaucm: add also card index for '-c' argument

aplay/arecord

    arecord: use correct duration
    aplay,axfer: Replace off64_t with off_t
    aplay: Fix parsing of format with WAV_FMT_EXTENSIBLE header

bat (basic audio tester)

    alsabat: improve error handling in bat_init()
    bat: Add 'readcapture' option to support analyzing external audio

alsa-ucm-conf
Configuration

    Gigabyte Z690I AORUS ULTRA DDR4, Realtek alc4080
    USB-Audio: fix bad Conditio in If.minifuse4
    USB-Audio: Add Minifuse 4
    USB-Audio: Add Sony inzone H7/H9 headset default/HiFi usecase
    ucm2: codecs: va-macro: fix dmic1 mux setting
    USB: Adding UCM2 configuration for Roland/BridgeCast
    sof-hda-dsp: Add speaker led support
    USB-Audio: ALC4080 on Gigabyte Z690 AORUS ULTRA
    USB-Audio: ALC4080 on MSI PRO X670-P WIFI
    USB-Audio: ALC4080 on MSI MPG Z590 Gaming Force
    USB-Audio: ALC4080 - Add MSI MAG B650M MORTAR WIFI (USB ID: 0db0:7696)
    wcd938x codec: remove empty DefaultDisableSeq.conf
    ucm2: Qualcomm: sc8280xp: add LENOVO Thinkpad X13s support
    ucm2: codecs: lpass: tx: add dmics via tx macro
    ucm2: codecs: lpass: make sure va dec mux is set correctly
    ucm2: codecs: lpass: add codec sequences for va dmic1
    ucm2: codecs: lpass-tx-macro: add codec sequences
    ucm2: codecs: lpass-rx-macro: add codec sequences
    ucm2: codecs: wcd938x: add codec sequences
    ucm2: codecs: wsa883x: add codec sequences
    ucm2: Rockchip: rk817: Add ALSA UCM support
    USB-Audio: ALC4080 - add wrx80e sage se wifi (ID: 0b05:1984)
    sof-soundwire: Initialize PGA switch controls in the BootSequence
    USB-Audio: ALC4080 - adds support for USB ID 0414:a010 (Gigabyte Z590 Vision G)
    USB-Audio: ALC4080 - Add support for MSI MAG Z590 Tomahawk WiFi motherboard
    max98090: drop Record Path DC Blocking to fix int mic
    USB-Audio: ALC4080 - Support for MSI B650 Tomahawk Wifi - USB ID 0db0:422d
    DEBUG.md: add systemctl restart command for pipewire
    ucm: USB-Audio - Add support for Focusrite Scarlett 2i2 gen3
    USB-Audio: ALC4080 - add Z690 AERO G DDR4 (USB ID 0414:a012)
    ucm2: MediaTek: mt8365-evk: Add alsa-ucm support
    Add UCM for PinePhone
    USB-Audio: ALC4080 - add MSI MPG Z790I Edge WiFi (ID: 0db0:62a4)
    USB-Audio: ALC4082 - add MSI MEG X670E ACE (0db0:961e)
    USB-Audio: ALC4080: detect MSI MPG Z790 Carbon Wifi
    USB-Audio: ALC4080: Add Support for MSI MPG Z790 Edge Wifi
    ucm2: sof-soundwire: Update Mic LED settings
    USB-Audio: Update quirk for Aorus Pro WiFi Rev 1.2
    ucm2: Add initial support for AMD Vangogh (acp5x) on Steam Deck
    Add: 0b05:1999 ASUS ROG Strix Z590-A Gaming WiFi
    ucm2: alc4080 - add support for MSI PRO Z790-A WIFI (ID 0db0:d1d7)
    USB-Audio: ALC4080 - Add support for ASUS ROG Crosshair X670 Extreme (ID 0b05:1a53)
    USB-Audio: alc4080 - add MSI MAG B650I Edge WiFi (ID 0db0:36e7)
    sof-hda-dsp: Set Dmic0 Capture Switch on
    sof-soundwire: set PGA capture switch for rt715 mic in BootSequence
    ucm2: sof-hda-dsp - If.devdmic cleanup
    ucm2: HDA: Update Mic LED settings for ACP DMIC
    ucm2: sof-hda-dsp: Update Mic LED settings
    HDA: DualCodecs - handle S/PDIF without analog connections
    USB-Audio: the environment variable UCM_USB_PERIOD_TIME may be undefined
    mt8195-demo: fix soundcard initialization
    USB-Audio: allow to configure period size for PCM split
    ucm2: add profile for the Librem 5
    ucm2: sof-soundwire: add basic settings for RT1318 SDCA device
    USB-Audio: ALC4080 - add 0db0:6cc9 MSI MPG Z590 Gaming Plus device
    ucm2: Alc4080 - add support for ASUS ROG Strix Z790-E Gaming Wifi
    ucm2: USB-Audio - Added Digidesign Mbox 3 support
    ucm: USB-Audio - Add support for Focusrite Scarlett 2i2 gen2
    ucm2: Add support for MT8192 Asurada Spherion Chromebook

Description

    Release v1.2.9
    README.md: add --wildcards also for the second tar command
    add --wildcards to tar options in README

1.2.8:
alsa-utils
Core

    Release v1.2.8
    configure: automake - use subdir-objects option
    configure: use AC_DISABLE_STATIC (for topology modules)

ALSA Control (alsactl)

    alsactl: Print driver name in info

alsatplg (topology)

    configure: use AC_DISABLE_STATIC (for topology modules)

amixer

    amixer: fix the help for 'events' command

aplay/arecord

    aplay: remove wrongly merged UCM code
    aplay: fix the capture file length regression

Changelog between 1.2.5 and 1.2.8 releases
tinycompress
Core

    Release v1.2.8
    README: mention official mirror
    README: remove old alsa-project link

Utilities

    cplay: add parentheses around comparison in operand of ‘&’
    cplay: remove set but not used warnings
    utils: cplay: Add support for ID3v2 tag skip
    utils: cplay: Add support for pause/resume
    utils: cplay: Reset file cursor after MP3 header parse

Changelog between 1.2.7.2 and 1.2.8 releases
alsa-lib
Core

    Release v1.2.8
    add FreeBSD build support (except test/)
    add NetBSD/OpenBSD build support (except test/)

Control API

    control: namehint - do not support 'card' devices
    control: eld - skip trailing spaces

PCM API

    pcm: rate: fix the crash for the partial period copy
    add DragonFlyBSD build support (except test/)
    pcm: hw_params - copy periods and buffer_time to the local variable
    pcm: fix the dshare delay reporting
    pcm: direct plugins: make three more symbols private to library

Use Case Manager API

    ucm: do not handle multiple Syntax field updates
    add DragonFlyBSD build support (except test/)
    add FreeBSD build support (except test/)
    doc: ucm - more volume notes
    doc: ucm - add sequence graphs
    ucm: add NULL check for card_name in open
    ucm: fix few memory-leaks in the error paths

Async helpers

    add NetBSD/OpenBSD build support (except test/)

Compatibility routines

    add NetBSD/OpenBSD build support (except test/)

Configuration

    Remove non existent SPDIF output on ThinkPad USB-C Dock Gen2
    add DragonFlyBSD build support (except test/)
    add NetBSD/OpenBSD build support (except test/)

Documentation

    doc: ucm - more volume notes
    doc: ucm - add sequence graphs

Kernel Headers

    add FreeBSD build support (except test/)
    add NetBSD/OpenBSD build support (except test/)

alsa-ucm-conf
Configuration

    USB-Audio: Add support for Arturia Minifuse 1
    Rockchip/max98090: add HDMI device
    USB-Audio: ALC4080: Add MSI MPG X670E Carbon Wifi (USB0db0:d6e7)
    USB-Audio: ALC4080 - add back SPDIF switch
    USB-Audio: ALC4080 - detect Speaker / Front Headphone controls
    ucm2: simplify acp3xalc5682m98.conf
    ucm2: Support acp3xalc5682m98 on Chromebook "zork"
    ucm2: mt8195-sof: Fix wrong JackControl for headphone
    USB-Audio: UR24C - add Steinberg UR24C (USB0499:174d)
    USB-Audio: alc4080 - add MSI MEG X570S Ace Max (ID 0db0:a47c)
    USB-Audio: alc4080 - add MSI MPG Z690 CARBON WIFI DDR5 (ID 0db0:005a)
    USB-Audio: Fix Motu M2/M4 regex expression (wrong field)
    sdm845: add LENOVO Yoga C630 support
    ucm2: codecs: wcd934x: Add enable disable sequences
    ucm2: USB-Audio: Add correct support for Rane SL-1
    ucm2: Add support for MT8195 Cherry Tomato Chromebook with SOF
    USB-Audio: Motu M4 - add new USB ID 07fd:0008
    USB-Audio: ALC4080 - add MSI X570S EDGE MAX WIFI USB ID 0db0:151f
    USB-Audio: ALC4080 - add Gigabyte Z590 Aorus Pro AX (USB 0414:a00e)
    ucm2: update DEBUG.md (download latest)
    USB-Audio: ALC4080 - correct S/PDIF PCM device for USB 0db0:1feb
    USB-Audio: ALC4080 - fix S/PDIF and Mic2 PCM values
    USB-Audio: ALC4080 - fix PCM,1 mixer control value settings
    ucm2: add DEBUG.md
    USB-Audio: ALC4080 - add 0db0:b202 MSI MAG Z690 Tomahawk Wifi
    ucm2: sof-glkda7219max: add initial support
    ucm2: HDA - add support for Internal Mic
    USB-Audio: Add Behringer UMC202HD configuration
    USB-Audio: Adding Focusrite Scarlett 2i4 gen2
    USB-Audio: ALC4080 - add ASUS ROG Strix B660-F Gaming WiFi USB ID
    USB-Audio: Add profile for MSI MEG Z690I Unify
    USB-Audio: Realtek ALC4080 cleanups
    USB-Audio: alc4080 - add multichannel variants
    USB-Audio: Aorus-Master-Main-Audio - fix the secondary card lookup
    Behringer UCM204HD - use S32_LE format for dshare/dsnoop
    rt715-sdca: use sensible capture gain value
    USB-Audio: add MOTU M2 config

Description

    Release v1.2.8
    README: fix tar compress arguments in README
    README: add the latest config download info
2023-11-23 16:15:04 +00:00
tsutsui
b0e6550067 mikutter: sync description in .desktop file with reality. 2023-11-23 15:42:48 +00:00
ryoon
3b3243ea0d doc: Updated games/py-renpy to 8.1.3 2023-11-23 15:41:39 +00:00
ryoon
cad81e4393 py-renpy: Update to 8.1.3
* deve/py-game_sdl2 does not support Python 3.12. Mark incompatible
  with Python 3.12 too.
* Support Cython 3. No performance consideration.
* Please ignore permission error when your project will be initialized via GUI.

Changelog:
8.1.3 / 7.6.3

Changes

Ren'Py now considers config.gl2 to be true on macOS. This is because there are
several fixes for window resizing on newer versions of macOS in the gl2
renderer that are not present in the gl renderer.

MMX acceleration for video playback has been re-enabled on Windows and Linux.

The way the Steam Deck keyboard is shown has changed. They keyboard is now
show, once, when a text input is displayed. By default, the keyboard is shown
at the top of the screen, and the keyboard will only be shown once. If it's
hidden (for example, the Steam button is pressed), the player needs to hit
Steam+X to show it. This works around issues with the Steam Deck.

The 32-bit windows Live2D library will be installed into Ren'Py 7. You may need
to reinstall Live2D to get this library.

Fixes

An issue that prevented keys from being bound to text (for example, keysyms
like "r" rather than "K_r") has been fixed.

There have been several documentation fixes.

An issue with rollback not working at the start of the game has been fixed.

8.1.2 / 7.6.2

Changes

There have been many documentation improvements.

When using renpy.classify(), a directory will now match patterns that do not
end with /. (For example, "renpy.app" will match the renpy.app directory).

ATL has been changed to use a deep compare to determine if a transform should
be continued or restarted. This means a transform will restart if global
variables it uses are changed.

The styles of a viewport's children will not change when it gains drag focus.
This was rarely used, and the style change could cause drags to be slow or to
miss.

Load will now roll the game back to the statement after the last statement that
interacted to the user. (Previously, it would roll back to the start of the
current statement.) This makes rollback on load match other rollbacks.

The _autosave variable now takes precedence over forced autosaves, including
those on quit and at choice menus.

PYTHON* variables are filtered from the environment when launching a Ren'Py
project from the launcher.

In self-voicing mode, Ren'Py will try to ensure that self-voicing notificatons
are fully spoken to the player, even if the notification window fades away.

Self voicing now speaks screens closer to the player before those further away
from the player.

Frame() will ensure that the frames it draws are at least one pixel in size in
both dimensions.

renpy.pause() can now roll forward to calls and jumps from screens.

On the web browser, the "display" : "window" preference now disables fullscreen
mode.

It is now possible to bind mouse buttons to skipping.

Fixes

Problems with the web port entering fullscreen mode have been fixed.

The Ren'Py 8 launcher can now launch games on Windows systems where the path to
Ren'Py is not representable in the system encoding.

The functionality to import Python from the game/ directory has been improved
to better comply with Python's PEP 302.

GamepadExist() now works as documented. As a byproduct of this fix, the gamepad
screen will be displayed in Help when in developer mode.

An issue analyzing nested comprehensions in screen has been fixed, fixing a
case where nested comprehensions could cause default variables to not be
available.

Viewport inertia continues even if the interaction restarts during the
animation.

The if_changed clause to play (and renpy.music.play()) now considers and
preserves looping.

VS Code launch has been fixed on Linux.

Several crashes on the web port of Ren'Py 7 have been fixed.

Movie functions now ensure the relevant channels exist before playing. This can
fix issue caused by loading a Movie from a save file.

8.1.1 / 7.6.1

Android

When creating keys for Android, Ren'Py will now use the same key for APKs and
Play Bundles, as for new games it's not necessary to use different keys. (For
existing games, Ren'Py will continue to use the existing separate keys.)

We've received reports of games uploaded to the Google Play as bundles having
their APKs rejected for having different keys. This was caused by an old
release of Ren'Py that used the APK key for bundles. A solution to this problem
is documented in incompatible changes.

Fixes

Web audio now treats the end time as a time, not a duration.

An issue with that prevented audio volumes and pan from participating in
rollback has been fixed.

Fix an issue where Live2D could select an image despite all of the required
attributes not being present.

Support for start, end, and loop times in videos has been restored.

Hotspots can no longer be const when the images used by the imagemap the
hotspots come from are not const.

An issue with non-resizable windows on macOS has been fixed.

An issue with linting fonts in the font directory has been fixed.

In some cases, when a class that inherited from the object class was changed to
no longer inherit from the object class, Ren'Py would crash. Ren'Py now
diagnoses this error, and config.ex_rollback_classes lets you suppress the
error. The error is only shown to developers, and is otherwise silently
ignored.

Other Changes

Ren'Py will disable text input methods when text editing is not possible, which
makes it possible to use the space key to advance the game even if an input
method that uses the space key is active.

The "system cursor" Preference() now applies to config.mouse_displayable, when
it used to only disable config.mouse.

ATL Transitions now use the animation timebase. This is generally the same
behavior as before, until the interaction restarts, in which case the
transition would often incorrectly restart.

Ren'Py will produce an error if an object that inherited from store.object in
an old save is loaded, and no longer inherits from store.object, which would
break rollback.

Preferences no longer have defaults, meaning all preferences can be changed
using the default statement.

The absolute type, used to represent absolute amounts of pixels, now ensures
the result of mathematically operations with integers and floats remain
absolutes. This fixes a class of problems where operations performed on
absolutes could produce the incorrect type, leasing to layout problems.

Live2D now checks for a motion after evaluating an attribute_filter, and does
not sustain the previous motions if a new motion is present.

8.1 / 7.6

Documentation Improvements and Fixes

There have been many documentation improvements and fixes, many of which are
not in the changelog.

The documentation now has a new theme, including a dark mode.

Ren'Py Sync

Ren'Py Sync is a new feature that makes it easier to move save files between
devices, using a server that is run as part of the Ren'Py project. For example,
when a player has to leave, they can click "Upload Sync" on their computer to
upload the saves and get a short code. They can then choose "Download Sync" on
the copy of their game on their phone, enter the code, and keep playing as they
travel.

Ren'Py Sync is designed with privacy in mind - the saves are encrypted, and
only a hash of the game title is sent to the server.

Ren'Py Sync is enabled by the new UploadSync and DownloadSync actions.

Speech Bubble Dialogue

Ren'Py now includes a new Speech Bubbles dialogue system. This is a
comprehensive system that allows dialogue to be displayed in comic-like speech
bubbles, and includes an interactive editor that allows the speech bubbles to
be repositions, and the look of a bubble to be changed interactively.

Adding bubble support to an existing game requires adding files and script to
the game. The bubble documentation includes the required changes.

Platform Improvements

Web

Ren'Py 8.1 can now be used to create games that run inside the web browser.
When running inside the web browser, Ren'Py used Python 3.11 (3.9 is used on
all other platforms).

On Ren'Py 8.1, Ren'Py can be used to create progressive web apps that run
inside the browser. Depending on the browser and platforms, it may be possible
to install a web game on a device in a manner similar to a native application.
Other platforms allow pinning a web app to the home screen.

There is a new Preference(), "web cache preload". If enabled, the game will
download all game data to the device from the web server. When online, the game
will check the downloaded data, and only download newer data if required. When
offline, the game will use the downloaded data.

Ren'Py can now play back movies on the web platform. Only movies that the
browser supports can be played.

Macintosh

On the Macintosh, Ren'Py now uses a universal binary that can run natively on
both Intel and Apple Silicon processors.

Android

Android has been changed so that the android.keystore file and bundle.keystore
file are expected to be found in the project's base directory, and not in the
rapt directory. This allows projects to be built with different keys, and helps
ensure the same keys are used with multiple Android versions.

When the new "Generate Keys" button is pressed, if old keystore files exist,
Ren'Py will offer to copy the old files into the project.

The android configuration file has been renamed from .android.json to
android.json. Ren'Py will automatically create the new file if the old exists.

Sticky Layers

A sticky layer is defined as one that, when a tag is shown upon it, will be
treated as that tag's default layer until it is either hidden, or shown on
another sticky layer.

In practice, that means showing a tag on a layer other than its default, and
assuming that layer is sticky, it will be updated with attributes set via a
show or say statement without the need to respecify the layer.

The following example assumes that the default layer for eileen is master, and
that near is a sticky layer:

show eileen onlayer near
eileen happy "Hello there!"  # will now work, where previously it would not
show eileen excited          # implicit onlayer near
hide eileen                  # implicit onlayer near
show eileen                  # implicit onlayer master, eileen's default

The default for this feature is for the master layer to be sticky, as well as
any layers created with renpy.add_layer() unless passed the new parameter
sticky=False.

Detached Layers & Layer Displayable

Detached layers are creator-defined layers which are not automatically added to
a scene. They are instead displayed using a new Layer displayable which can be
show on other layers.

One of the driving factors behind this is that it allows shaders and other
transform effects to be applied to a group of tags while still allowing them to
operate normally with other systems such as show and say statements. It also
also allows the same layer to be shown multiple times, for instance in
reflections or several TV showing the same channel.

As detached layers don't participate in scene building in the same way as
typical layers, they are defined directly in config.detached_layers rather than
through add_layer(), and are inherently sticky.

New Image Formats and Image Oversampling

These releases add support for two new image formats:

  * The AV1 Image File Format (AVIF) is a new image format that uses modern
    compression techniques to produce smaller files than JPEG, PNG, or WebP. In
    many cases, converting images to AVIF will reduce their size without
    sacrificing image quality.

  * SVG files are a vector graphics format used on the web. Ren'Py supports a
    SVG files containing a subset of SVGs capability. (Notably, Ren'Py does not
    support text in SVG files.) Ren'Py will automatically oversample (or
    undersample) SVGs when the game is scaled, to ensure the SVGs remain sharp
    at any resolution, similar to the way it oversamples text. This makes svgs
    a reasonable choice for interface elemnts that need to remain sharp.

This release of Ren'Py also adds support for oversampling raster images, like
PNG, JPEG, WebP, and AVIF. For these images, oversampling is done by including
an @ and number in the filename. For example, "eileen happy@2.png" will be
oversampled by a factor of 2. This allows for easier ways of making a
remastered version of a game with minimal changes to the code. Image
manipulators, which are now obsolete but common in older games, support
oversampled images.

For raster images, oversampling causes the image file to be loaded at full
resolution, but treated as if it was smaller by the oversampling factor. For
example, if the image is 1000x1000, and is oversampled by 2, it will be treated
as a 500x500 image for the purpose of layout. If the game is scaled up, all of
the image data is available to keep the image sharp.

Image oversampling can also be used with the new config.physical_width and
config.physical_height variables to upgrade the resolution of a game without
having to adjust the game's layout.

AV1 Video

Ren'Py now supports the modern AV1 video format. AV1 is supported in WEBM and
MKV containers. AV1 videos should be about 30% smaller than the equivalent
quality movie encoded with VP9, the previous best codec.

Note that the newer AV1 format requires more CPU to decode. It's possible that
some hardware that plays VP9 fluidly will struggle with AV1.

Audio

Mixer now work on power in decibels, similar to the way the volume controls on
audio equipment and computers work. An empty mixer slider represents -40 dB
below the maximum volume, while a full bar represents 0 dB, the full volume.
This makes the mixers more dynamic. Previously, the volume slider had to be
very near the bottom before it had an effect. Now, the volume increases and
decreases match the way people perceive loudness.

Variables that control the default mixer volumes, such as
config.default_music_volume, config.default_sfx_volume, and
config.default_voice_volume now work on a scale where 0.0 is -40 dB, and 1.0 is
0 dB. SetCharacterVolume() works in a similar way, as do the new
preferences.set_mixer() and preferences.get_mixer() functions.

The audio fadein and fadeout functions also work using power. This ensures that
the fade is apparent over the course of the entire fadeout or fadein, rather
than only at the end. The audio fading implementation has also been rewritten
to allow fades of very short lengths. Previously, fading would produce errors
if the fade time was too short.

The config.fadeout_audio variable (renamed from config.fade_music) controls the
default fadeout used when stopping audio, or changing audio using play. (It is
not used by queue). The default value is now 0.016 seconds, which eliminates
popping sounds that occured when audio was stopped abruptly.

Audio panning (renpy.music.set_pan()) is now constant-power, so that panning
audio should not change the volume.

Draggable Viewports

Viewports can now be dragged by the user, even if a button or other displayable
inside the viewport is focused. Ren'Py will now detect when the user is
dragging, and switch focus to the viewport, allowing the viewport to move.

The draggable property of viewports and vpgrids can now take a screen variant
like "touch", in which case the viewport will only be draggable if touch is
enabled.

_ren.py Files - Ren'Py in Python

The new _ren.py file format allows Ren'Py script to be embedded in a valid
Python file. For example:

"""renpy
init python:
"""

flag = True

is equivalent to:

init python:

    flag = True

The purpose of this new format is to allow Python-heavy script files to be
edited with Python-specific tools, while still running as Ren'Py script.

Constant Stores

Ren'Py has the ability to mark a named store as a constant, by setting the
_constant variable in that store. If true, variables in that constant store
will not be saved, and objects reachable solely from that store will not
participate in rollback.

The reason to declare a store constant is that there are small per-store and
per-variable overheads that are required to support rollback. Declaring a store
constant can eliminate these overheads.

The following stores are declared to be constant by default:

    _errorhandling _gamepad _renpysteam _sync _warper audio achievement build
    director iap layeredimage updater

Variables in a constant store can be updated during the init phase, but should
not change after the init phase finishes.

Lenticular Bracket Ruby Text

Ruby text, small text above the main characters used for readings and
translations, can now be written be written by enclosing it in full-width
lenticular brackets (????), with the full-width or half-width vertical line
character (?? or |) separating the bottom text from the top text. For example:

e "Ruby can be used for furigana (???????????? ??????????????)."

e "It's also used for translations (????????Tokyo??)."

In some contexts, the left full-width lenticular bracket (??) must be doubled,
to "????", to prevent it from being interpreted as the start of ruby text. For
example:

e "????This is not | ruby text.??"

Accessibility

The new config.tts_substitutions variable allows the game to provide
substitution rules for self-voicing. That is meant to allow the creator to
control pronunciation of words that might be mispronounced by the text to
speech engine.

For example:

define config.tts_substitutions = [
    ("Ren'Py", "Ren Pie"),
]

Will cause the word "Ren'Py" to be pronounced as "Ren Pie" whenever
self-voicing speaks it.

Self-voicing now respects the voice volume mixer.

Save Token Security

Ren'Py now uses tokens to warn users when a save file is moved between devices,
to prevent the user from making mistakes described in the security
documentation.

This works by generating a token the first time Ren'Py is run on a given
computer. This token is included in saves and in persistent data. If the token
for a different computer is found in a save file, the user is warned and asked
if they want to continue. If they choose yes, the user will be asked if they
want to automatically accept all saves from that computer.

Persistent data is loaded if it's from the current computer, or a computer with
an accepted token.

The first time a game is run with a version of Ren'Py supporting save tokens,
all save files that exist for that game are checked, and if a token does not
exist in those files, the token is added. This should prevent prompting during
upgrades to Ren'Py 8.1/7.6 or later.

There is intentionally no way to disable this feature, as it's important for
end-users to be warned about the security issues when possible.

New Search Paths

Ren'Py will now search for audio files in the game/audio directory, and font
files in the game/fonts directory, if not found in the game directory. Images
will still be searched for in the game/images directory, but other files will
not be found there.

New 3D Stage Properties

There are several new properties that affect the 3D Stage:

point_to

    Selects the point that the camera is looking at, or has a sprite point at a
    point or the camera.

xrotate, yrotate, zrotate

    Rotates a sprite or the camera around the given axis.

orientation

    Rotates a sprite or the camera around all three axes at once, using the
    shortest path on a sphere.

Live2D

Ren'Py now supports the new features found in Live2D Cubism Editor 4.2. To
support these features, it should be run with Cubism 4 Sdk for Native R6_2 or
later.

Live2D is now supported on x86_64 Android.

The new Live2D.blend_opacity method makes it possible for a Live2D
update_function to change the opacity of the Live2D model.

Launcher and Engine Translations

Where possible, machine translation has been used to update strings used by the
launcher and the engine, to update translations that might not have been
updated in many years.

If you'd like to improve these translations, you can do so. Edit the .rpy files
in launcher/game/tl/language, and send them to us. Please remove the "Automatic
translation" lines when you do.

The following languages have had their translations automatically updated:

  * Finnish

  * French

  * German

  * Greek

  * Indonesian

  * Italian

  * Japanese

  * Korean

  * Polish

  * Portuguese

  * Russian

  * Simplified Chinese

  * Turkish

  * Ukrainian

The following translations had manual updates:

  * French

  * Portuguese

  * Spanish

  * Japanese

  * Ukrainian

More New Features

The input displayable can now take multiline input.

The new JSONDB system allows a developer to store data in a JSON file that can
be saved alongside the game script. For example, a JSONDB is used to store the
speech bubble information.

The new areapicker displayable provides a way for tools to let the player
select an area on the screen.

Movie can now take a group argument. If the Movie is in a group, and it has
started up, and another Movie in the same group had displayed in the prior
frame, the Movie will display the last image of the old Movie. This is intended
to allow movie sprites to switch from one to the other seamlessly.

The new config.file_slotname_callback variable allows the developer to
customize how file slot names are generated. One application of this is allow
the developer to apply a prefix to save slots (for example, to select between
dlc and non-dlc saves). The new autosave_prefix_callback allows a similar
prefix to be given to autosaves.

A new tool, accessible through the developer (Shift+D) menu, allows persistent
data to be viewed.

The interactive director can now create a statement that removes an attribute
from an image.

The show screen, hide screen, and call screen statements can now take
expression, as, onlayer, zorder, and with clauses, which have the same meaning
as the corresponding clauses in the show and hide statements.

The renpy.include_module() function can now be used to load a rpym file in such
a way that its init blocks are interleaved with those from the rest of the
game.

The new "voice after game menu" preference controls if voice is allowed to
continue playing after the game menu is shown.

A creator-defined statement can now execute a function at the same time the
default statements are executed. This is after the init phase, but before the
game starts; when a save is loaded; after rollback; before lint; and
potentially at other times.

The new config.after_default_callbacks allows callbacks to be run immediately
after the default statements are executed.

The interactive director now lets you negate an attribute by right clicking on
the attribute name.

The Text() displayable now takes a new tokenized argument. When true, the Text
displayable expects to take a list of tokens taken from a custom text tag.

Two new layers are now part of Ren'Py. The "top" layer is displayed above all
other layers, and does not participate in transitions. This makes it useful for
display information that is always shown. The "bottom" layer is displayed below
all other layers. The bottom layer is useful for handling keys in a way that is
always active.

Ren'Py supports the C90 encoding for Thai fonts, which uses the unicode private
area to provide glyphs that are combinations of base characters, vowel marks,
and tone marks. This can be enabled by selecting a Thai font that supports the
C90 encoding, and then setting language to "thaic90".

It's now possible for a mouse keysym to be given modifiers corresponding to the
state of keyboard modifiers when the mouse button was pressed. For example,
"shift_mouseup_1" will only trigger when mouse button 1 is released while the
shift key is held down.

Keysyms have been reworked to make it possible to bind to numeric keypad keys
(like the arrows and home) when numlock is off, and the keymap has been
reworked to make better use of the numeric keypad.

Normally, when a displayable or screen with the same tag or name as one that is
hiding is shown, the hiding displayable or screen is removed, cancelling the
hide transform. The new show_cancels_hide transform property controls this
behavior.

The console (accessed with shift+O) help command can now take an expression, in
which case it display the pydoc documentation for the function or class that
expression refers to.

The new renpy.get_translation_identifier() function returns the unique
identifier for the current line of dialogue, if there is one.

The new config.scene_callbacks function contains a list of functions that are
called when the scene statement is run or the renpy.scene() function is called.

The size text tag now takes multipliers, so it's possible to have:

"{size=*2}This is double size{/size} and {size=*0.5}this is half size{/size}."

The dismiss displayable now takes a keysym property, specifying what keysym
causes the dismiss.

The new config.autosave_callback is run after a background autosave finishes.

The new renpy.music.pump() function can be called to cause audio changes to
take effect immediately, rather than at the start of the next interaction. The
main use of this is to allow a sound to be played, and then faded out. (By
default, a play followed by a stop causes the track to never be played, and
hence never faded out.)

The new renpy.clear_attributes() function allows for an image tag to be cleared
of all the attributes attached to it. The previous way to do this was to hide
and show the image again, which had the consequence of also resetting the
placement of the image on the screen. It is not the case with this function.

The new config.check_conflicting_properties variable, which is disabled in
existing games but enabled in newly created games, enables you to check for
conflicting style or transform properties being set concurrently. This is
dangerous as the resulting behavior is undefined and may vary between platforms
and versions of Ren'Py.

The new config.font_name_map variable allows you to name font files or Font
Groups, so that it becomes easier to use them in {font} tags. Previously, there
was no way to use a fontgroup in a {font} tag.

The Scroll Action now takes a delay parameter, so that the scrolling is
animated over a short period of time.

The new preferences.audio_when_unfocused preference now enables the audio of
the game to be paused when the player switches to another window.

The screens' for loops now support the continue and break statements.

Disabling Dialogue's Monologue Mode is now possible using the rpy monologue
none statement at the beginning of the file it should apply to.

Other Changes

The polar motion properties (around, radius, and angle) will now produce
circular, rather than oval motion, with radius using the minimum of the
available wdith and height to scale distances expressed as heights. The new
anchoraround, anchorradius, and anchorangle properties can position the anchor
using polar coordinates.

Ren'Py will now produce errors when a screen sets two conflicting properties,
like align, and xalign. Previously, the behavior of this was undefined.

Lint will now check your game for statements that can never be reached, and
will report the statements.

Lint will now check your game for translations that are no longer being used,
and report those.

It's possible to configure the channels used to upload to itch.io using the
build.itch_channels variable.

Triple quote strings can now be used in most places a single quoted string can.
Most notably, this allows triple quoted strings to be used in screens. For
example, you can use:

screen example():
    text """\
line 1
line 2
line 3"""

to create three lines in one text displayable.

The maximized window state is now stored int preferences, and if a game was
maximized when it shut down it will be maximized again when started again.

A screen language displayable can now have at transform on the first line:

text "Spinny text" at transform:
    rotate 0.0
    linear 2.0 rotate 360.0
    repeat

It's now possible for a screen language statement to have both an at property
and an at transform block, provided the property comes first.

Local variables (prefixed with __) may now be used in f-strings.

The {nw} tag will wait for self-voicing to complete, when self-voicing is
enabled.

The selected_insensitive style prefix will now be generated, and selected and
selected_insensitive events will be given to transforms when appropriate.

Displayables with an id property can now be given the prefer_screen_to_id
property, which controls if properties supplied by the screen override the
properties supplied by the displayable identifier. The default remains that the
displayable identifier overrides the screen.

The fadein clause can be used when queuing an audio track.

Ren'Py will limit calls to BOverlayNeedsPresent on Steam Deck, preventing a
freezing issue.

Dialogue is now present in the history list (and hence the history screen)
during the statement in which the dialogue is shown. Previously, it was only
present at the end of the statement.

When config.steam_appid is not set, Ren'Py will delete any existing
steam_appid.txt file in the game directory. This is to prevent the wrong app id
from being used.

Audio volumes are now preserved when muted. (This means that the volume will
not drop to 0 when the game is muted.)

It is now explicitly documented that non-self-closing tags will be closed at
the end of a block of text. This was the behavior of many versions of Ren'Py,
but would produce lint warnings. Now, the following is explicitly valid:

e "{size+=20}This is big!"

Self-voicing and auto-forward mode may now be enabled at the same time. When
this is the case, auto-forward will only occur when the dialogue is focused.

Ren'Py no longer requires grids or vpgrids to be full - it will now pad these
grids with nulls as required.

The execute_init argument to renpy.register_statement() now respects the
init_priority argument. Previously, all execute_init function ran at init
priority 0.

The config.label_callback variable has been renamed to config.label_callbacks,
and now takes a list of callback functions.

A number of documented functions, classes and Actions have seen their
signatures (meaning the arguments they take) corrected in the documentation,
making them safer to use.

Ren'Py used to normalize all whitespace to standard spaces, and now supports
non-standard spaces such as \u3000, the full-width ideographic space.
2023-11-23 15:41:21 +00:00
ryoon
d307958085 doc: Updated devel/py-game_sdl2 to 2.1.0.8.1.3 2023-11-23 15:39:19 +00:00
ryoon
0f79ca01b0 py-game_sdl2: Update to 2.1.0.8.1.3
* Support Cython 3. No considereation for performance.
* Python 3.12 is not supported.

Changelog:
* Sync with RenPy 8.1.3.
2023-11-23 15:39:05 +00:00
ryoon
0e5eb1c990 doc: Updated lang/openjdk17 to 1.17.0.9.9 2023-11-23 15:34:17 +00:00
ryoon
fe1f08c357 openjdk17: Update to 1.17.0.9.9
Changelog:
Additional features include:

    Update to 17.0.9 GA
2023-11-23 15:34:02 +00:00
ryoon
bfac569581 doc: Updated lang/openjdk11 to 1.11.0.21.9 2023-11-23 15:33:35 +00:00
ryoon
8050caffd0 openjdk11: Update to 1.11.0.21.9
Changelog:
Additional features include:

    Update to 11.0.21 GA
2023-11-23 15:33:19 +00:00
ryoon
751a86633e doc: Updated lang/openjdk8 to 1.8.392 2023-11-23 15:32:57 +00:00
ryoon
dd4ab63377 openjdk8: Update to 1.8.392
Changelog:
Additional features include:

    Updated to 8u392 GA
2023-11-23 15:32:42 +00:00
jperkin
b813eca33d p11-kit: SunOS needs -D__EXTENSIONS__. 2023-11-23 15:31:39 +00:00
ryoon
85f9c386aa doc: Updated mail/thunderbird-l10n to 115.5.0 2023-11-23 15:28:23 +00:00
ryoon
4142d82d2b thunderbird-l10n: Update to 115.5.0
* Sync with mail/thunderbird-115.5.0.
2023-11-23 15:28:07 +00:00
ryoon
0017955f7d doc: Updated mail/thunderbird to 115.5.0 2023-11-23 15:27:46 +00:00
ryoon
130578b2f8 thunderbird: Update to 115.5.0
Changelog:
Fixes

fixed
Initial message was not automatically selected when opened in conversation

fixed
Newsgroup users using FQDN identity generated message ID headers with incorrect
domain name

fixed
Link previews had poor legibility in dark mode

fixed
Plasma's task switcher displayed the default icon when running the Thunderbird
Flatpak on Wayland

fixed
Link to Flatpak manifest was incorrect

fixed
Security fixes

security fixes:
Mozilla Foundation Security Advisory 2023-52
#CVE-2023-6204: Out-of-bound memory access in WebGL2 blitFramebuffer
#CVE-2023-6205: Use-after-free in MessagePort::Entangled
#CVE-2023-6206: Clickjacking permission prompts using the fullscreen transition
#CVE-2023-6207: Use-after-free in ReadableByteStreamQueueEntry::Buffer
#CVE-2023-6208: Using Selection API would copy contents into X11 primary
 selection.
#CVE-2023-6209: Incorrect parsing of relative URLs starting with "///"
#CVE-2023-6212: Memory safety bugs fixed in Firefox 120, Firefox ESR 115.5, and
 Thunderbird 115.5
2023-11-23 15:27:29 +00:00
ryoon
eba3eaa358 doc: Updated www/firefox102-l10n to 102.15.1 2023-11-23 14:24:10 +00:00
ryoon
4f255cc59b firefox102-l10n: Update to 102.15.1
* Sync with www/firefox102-102.15.1.
2023-11-23 14:23:56 +00:00
ryoon
8d8e67bb0a doc: Updated www/firefox102 to 102.15.1 2023-11-23 14:22:50 +00:00
ryoon
369246a9db firefox102: Update to 102.15.1
* Fix build with the latest textproc/icu.

Changelog:
Security fixes:
Mozilla Foundation Security Advisory 2023-40
#CVE-2023-4863: Heap buffer overflow in libwebp
2023-11-23 14:22:32 +00:00
tsutsui
771dcc7c32 doc: Updated net/mikutter to 5.0.5nb4 2023-11-23 13:30:21 +00:00
tsutsui
4ae0752f46 mikutter: pull a patch to implement blowfish deprecated by OpenSSL 3.0.
Bump PKGREVISION.
2023-11-23 13:29:53 +00:00
ryoon
3a78d33b68 doc: Updated www/firefox115-l10n to 115.5.0 2023-11-23 12:47:55 +00:00
ryoon
763a8c1e9d firefox115-l10n: Update to 115.5.0
* Sync with www/firefox115-115.5.0.
2023-11-23 12:47:41 +00:00
ryoon
e4537c1c73 doc: Updated www/firefox115 to 115.5.0 2023-11-23 12:47:18 +00:00
ryoon
32098badda firefox115: Update to 115.5.0
Changelog:
Fixed
    Various security fixes and other quality improvements.

Security fixes:
Mozilla Foundation Security Advisory 2023-50
#CVE-2023-6204: Out-of-bound memory access in WebGL2 blitFramebuffer
#CVE-2023-6205: Use-after-free in MessagePort::Entangled
#CVE-2023-6206: Clickjacking permission prompts using the fullscreen transition
#CVE-2023-6207: Use-after-free in ReadableByteStreamQueueEntry::Buffer
#CVE-2023-6208: Using Selection API would copy contents into X11 primary
 selection.
#CVE-2023-6209: Incorrect parsing of relative URLs starting with "///"
#CVE-2023-6212: Memory safety bugs fixed in Firefox 120, Firefox ESR 115.5, and
 Thunderbird 115.5
2023-11-23 12:47:01 +00:00
jperkin
a323e97202 python*: Remove -luuid hack on SunOS.
This ends up leaking into the shipped python-config, which wouldn't normally
be a problem, but broken build systems such as waf end up linking against
libraries that are not buildlinked, resulting in missing libuuid references.

If this is still required for builtin libuuid support then that will need to
be done in a different way that doesn't end up in the exported libraries.
2023-11-23 12:43:35 +00:00
wiz
7a65bef622 doc: Updated geography/py-proj to 3.2.1nb6 2023-11-23 11:23:17 +00:00
wiz
90bd2e6069 py-proj: fix build with Cython 3
Add missing dependency.
Convert to wheel.mk.

XXX: this should be updated
2023-11-23 11:23:07 +00:00
wiz
feb032cf51 libfilezilla: try requiring gcc 8
to fix
nvoker.cpp: In function 'fz::invoker_factory fz::get_invoker_factory(fz::event_loop&)':
invoker.cpp:28:54: error: 'loop' was not declared in this scope
  return [handler = std::optional<thread_invoker>(), &loop](std::function<void()> const& cb) mutable {
                                                      ^~~~
invoker.cpp: In lambda function:
invoker.cpp:30:20: error: 'loop' is not captured
    handler.emplace(loop);
                    ^~~~
invoker.cpp:28:58: note: the lambda has no capture-default
  return [handler = std::optional<thread_invoker>(), &loop](std::function<void()> const& cb) mutable {
                                                          ^
invoker.cpp:28:54: note: '<typeprefixerror>loop' declared here
  return [handler = std::optional<thread_invoker>(), &loop](std::function<void()> const& cb) mutable {
                                                      ^~~~
seen with gcc 7 on NetBSD 9.
2023-11-23 11:15:13 +00:00
jperkin
5a3f7da393 gettext-tools: Add termcap to the buildlink includes.
This is required for dependencies that use libtextstyle.
2023-11-23 11:12:33 +00:00
wiz
0cfc0fca7c binaryen: fix PLIST for new test option 2023-11-23 11:11:25 +00:00
jperkin
2c38441849 harfbuzz: Ensure glib2 is included before gtk-doc.
This works around an issue with detecting whether all required libraries are
runtime dependencies.  gtk-doc is a build-only dependency, which causes bl3
to tag glib2 and all of its dependencies as build too.  Later inclusion of
glib2 marks it as a full dependency, but include guards mean all of its
dependencies are not.  Including glib2 first is a hack, but does resolve the
problem for now.
2023-11-23 11:11:05 +00:00
jperkin
71e3ed9a30 fontconfig: Remove PYTHON_FOR_BUILD_ONLY=yes.
This should really have been "tool" all along, and now that tool.mk defaults to
that we can remove it completely.
2023-11-23 11:03:04 +00:00
wiz
c44db36760 hs-direct-sqlite: require sqlite 3.32 for SQLITE_IOERR_DATA 2023-11-23 11:02:21 +00:00
jperkin
576c73c72d llvm: Switch PYTHON_FOR_BUILD_ONLY to "tool".
Avoids problems where python is buildlinked, and buildlink dependencies of
python ending up being available during the build but not registered as full
dependencies, resulting in them potentially being unavailable at runtime.
2023-11-23 11:01:46 +00:00