Table of Contents

Currently viewing version: 0.8.0.0

Changelog for 66


In 0.8.0.0

Synthesized Release Notes

New features

Frontend files

To help with this, use the script below by running: ./migration_service.sh /path/to/my/<FrontendFile>

#!/bin/sh

service="${1}"

sed -e "s:\[main\]:\[Main\]:g" \
    -e "s:@type:Type:g" \
    -e "s:@description:Description:g" \
    -e "s:@version:Version:g" \
    -e "s:@depends:Depends:g" \
    -e "s:@requiredby:RequiredBy:g" \
    -e "s:@optsdepends:OptsDepends:g" \
    -e "s:@options:Options:g" \
    -e "s:@flags:Flags:g" \
    -e "s:@notify:Notify:g" \
    -e "s:@user:User:g" \
    -e "s:@timeout-kill:TimeoutStart:g" \
    -e "s:@timeout-up:TimeoutStart:g" \
    -e "s:@timeout-finish:TimeoutStop:g" \
    -e "s:@timeout-down:TimeoutStop:g" \
    -e "s:@maxdeath:MaxDeath:g" \
    -e "s:@down-signal:DownSignal:g" \
    -e "s:@hiercopy:CopyFrom:g" \
    -e "s:@intree:InTree:g" \
    -e "s:\[start\]:\[Start\]:g" \
    -e "s:@build:Build:g" \
    -e "s:@runas:RunAs:g" \
    -e "s:@execute:Execute:g" \
    -e "s:\[stop\]:\[Stop\]:g" \
    -e "s:\[logger\]:\[Logger\]:g" \
    -e "s:@destination:Destination:g" \
    -e "s:@backup:Backup:g" \
    -e "s:@maxsize:MaxSize:g" \
    -e "s:@timestamp:Timestamp:g" \
    -e "s:\[environment\]:\[Environment\]:g" \
    -e "s:\[regex\]:\[Regex\]:g" \
    -e "s:@configure:Configure:g" \
    -e "s:@directories:Directories:g" \
    -e "s:@files:Files:g" \
    -e "s:@infiles:InFiles:g" \
    -i ${service}

See Rosetta Stone for the list of keyword name changes.

Behavior enhancements

Deprecated and Obsolete keywords

The deprecated key @shebang has been completely removed and is no longer recognized by the parser.

The Destination key (previously @destination) in the [Logger] section is now deprecated and replaced by new StdIn, StdOut, and StdErr keywords. For compatibility, the parser will automatically handle the conversion.

Removal of Deprecated Options:

Bug Fixes


In 0.7.2.1


In 0.7.2.0


In 0.7.1.1


In 0.7.1.0


In 0.7.0.2


In 0.7.0.1


In 0.7.0.0

This release marks a significant rewrite of 66, introducing a new UI and serving as a comprehensive service supervision suite and independent service manager.

Primarily, expect no compatibility with previous versions due to:

For UI changes, frontend file convertion and clean of the 66 architecture, a Rosetta stone is available.

Frontend Files

New fields have been added:

The following field has been removed:

Frontend files for regular account must be now localized at /usr/share/66/service/user, /etc/66/service/user or ${HOME}/.66/service.

Behavioral changes:

The classic type now accepts the fields @depends and @requiredby. The classic type replaces the longrun type.

Logger destinations for oneshot type services can now be declared on a tmpfs directory, particularly useful during boot time.

Services can be started without being enabled first. In this case, the service won't start on the next reboot.

The bundle and longrun types have been removed, replaced by classic, oneshot, and module types. For compatibility reasons, if your old frontend file declares the service as a longrun type, the parser will convert it to a classic type automatically. No automatic conversion is made for services of type bundle.

[Environment] Section

This section now allows reusing the same variable from the actual environment. For instance:

socket_name=!/run/dbus/system_bus_socket
cmd_args=!--system --address=unix:path=${socket_name}
PATH=/usr/local/bin:${PATH}

The order of key-value pair declaration doesn't matter:

cmd_args=!--system --address=unix:path=${socket_name}
socket_name=!/run/dbus/system_bus_socket

Variable name must be between ${} to get it value. For instance, $var is not replaced by its value.

Double-quote within value must be escaped with backslash \. Refers to the updated documentation of execl-envfile for futhers information.

Module Changes

The module directory structure has been completely redesigned for better intuitiveness and comprehensiveness. Expect no compatibility with the previous version; a rewrite is required if you use module on your system.

A module cannot contain another module; instead, you can declare it as a dependency via @depends or @requiredby. These can also be specified through the configure module script.

Refer to the specific module page for furthers information.

Trees

Trees now react as services regarding graph dependencies. You can declare a tree depending on or required-by others.

A default named global tree is provided. Services without their localization defined or users not specifying a tree to use will be defined within that tree.

A seed file can be provided for automatic tree configuration at creation time. For example, it defines depends/requiredby dependencies of the tree.

If a service declares a non-existing tree, the tree will be created automatically with a default configuration, but without any depends/requiredby dependencies. To configure the tree with specific requirements at creation time, provide and install seed file with your service.

Configure Script

Removed flags: - --with-system-module=DIR - --with-sysadmin-module=DIR - --with-user-module=DIR

Added flags: - --with-default-tree-name=NAME - --max-path-size=KB - --max-service-size=KB - --max-tree-name-size=KB - --with-system-seed=DIR - --with-sysadmin-seed=DIR - --with-user-seed=DIR

The slashpackage convention was removed.

Skeleton files

The skeleton files shudown, reboot, poweroff and halt are removed and replaced by 66 reboot, 66 poweroff, 66 halt command respectively.

Code Changes

The code has been largely rewritten and simplified, offering more features with approximately the same number of code lines. Additionally, the code now uses less HEAP memory, although this optimization is ongoing.

The parser was completely rewritten and heavily optimized, significantly reducing the time to parse a service(by three times).

The start process was rewritten due to the removal of s6-rc. Oblibs now provide general functions to build any Acyclic graph.

The code for the module part was revamped and greatly simplified.


In 0.6.2.0


In 0.6.1.3


In 0.6.1.2


In 0.6.1.1


In 0.6.1.0


In 0.6.0.1


In 0.6.0.0


In 0.5.1.0


In 0.5.0.1


In 0.5.0.0

This is a Major release, you need to update your trees with 66-update tool. If you skip from a version earlier than 0.4.0.1, the 66-update will not work. In this case, you need to reconstruct your trees manually. Downgrading to a previous version will not work either, due to the new format of the resolve inner files.


In 0.4.0.1


In 0.4.0.0

This is a Major release, you need to update your trees with 66-update tool.


In 0.3.0.3


In 0.3.0.2


In 0.3.0.1


In 0.3.0.0

This is a Major release, you need to update your trees with 66-update tool.


In 0.2.5.2


In 0.2.5.1


In 0.2.5.0


In 0.2.4.1


In 0.2.4.0


In 0.2.3.2


In 0.2.3.1


In 0.2.3.0


In 0.2.2.2


In 0.2.2.1


In 0.2.2.0


In 0.2.1.2


In 0.2.1.1


In 0.2.1.0


In 0.2.0.4


In 0.2.0.3


In 0.2.0.2


In 0.2.0.0


In 0.1.0.1


In 0.1.0.0


In 0.0.2.2


In 0.0.2.1


In 0.0.2.0


In 0.0.1.1