Difference between revisions of "Funtoo:Macaroni Linux/Luet/Releases/0.28.0"

From Funtoo
Jump to navigation Jump to search
Line 13: Line 13:




* the previous version uses a main metadata file that is load every time you need to search packages, or install new packages. Having one single metadata file doesn't permit to scale. It take about 3sec to read all data that are all loaded in memory. This is like a memory leak when a repository has more of 3000 pkgs also because it contains the list of all files owned by every package. In this first step what i did is read this file only one time just after ''luet repo update'' and then create a metadata.yml file in the local cached tree for every package. This permits to speedup parsing reading directories in parallel and load in memory only the needed data. When I will begin to rewrite ''luet-build'' binary too the repository tarball will be organized already with this structure to avoid also the unique parsing after ''luet repo update''.
* the previous version uses a main metadata file that is load every time you need to search packages, or install new packages. Having one single metadata file doesn't permit to scale. It take about 3sec to read all data that are all loaded in memory. This is like a memory leak when a repository has more of 3000 pkgs also because it contains the list of all files owned by every package. In this first step what i did is read this file only one time just after ''luet repo update'' and then create a metadata.yml file in the local cached tree for every package. This permits to speedup parsing, reading directories in parallel and load in memory only the needed data. When I will begin to rewrite ''luet-build'' binary too the repository tarball will be organized already with this structure to avoid also the unique parsing after ''luet repo update''.




* with this release are been integrates hidden command related to the ''miner'' subcommands that permits to work at low level with install/remove of the packages from the luet database. This are like emergency commands to use only when you know what you do. But at the moment is the only way to reinstall full packages without receive a OOM exception. The command ''luet reinstall $(luet s --installed .)'' with more of 3000 package explode your system. Using ''miner'' subcommands will permits a full recovery of your system. With the Part 2 of the refactor the current logic of the command ''reinstall'', ''install'', ''uninstall'' will be reviewed to permits a normal use.
* with this release are been integrated hidden command related to the ''miner'' subcommands that permits to work at low level with install/remove of the packages from the luet database. This are like emergency commands to use only when you know what you do. But at the moment is the only way to reinstall full packages without receive a OOM exception. The command ''luet reinstall $(luet s --installed .)'' with more of 3000 package explode your system. Using ''miner'' subcommands will permits a full recovery of your system. With the Part 2 of the refactor the current logic of the command ''reinstall'', ''install'', ''uninstall'' will be reviewed to permits a normal use.




* this release move ahead the libraries tar-formers at version 0.5.0. This boost of 30x the performance. A detail is available here: https://github.com/geaaru/tar-formers/commit/a545b40ff7c513453683217cff64e4ee82125fe8
* this release move ahead the libraries tar-formers at version 0.5.0. This boost of 30x the performance. A detail is available here: https://github.com/geaaru/tar-formers/commit/a545b40ff7c513453683217cff64e4ee82125fe8

Revision as of 13:31, August 23, 2022

Luet 0.28.0 is a minor release which was released on 23 August 2022.


ChangeLog

This release could be consider the Part 1 of the big refactor of the luet software. In particular, with this release I began to rewrite the core engine of the PMS installer and set the base for a behavior completed in the next release:

  • the new implementation not yet connected to the main command install|uninstall is been modified to support uninstall finalizer. This permits to define commands to run when a package is been removed. For example, rebuild the gnome icons cache when a desktop application is removed, etc.


  • the previous version uses a main metadata file that is load every time you need to search packages, or install new packages. Having one single metadata file doesn't permit to scale. It take about 3sec to read all data that are all loaded in memory. This is like a memory leak when a repository has more of 3000 pkgs also because it contains the list of all files owned by every package. In this first step what i did is read this file only one time just after luet repo update and then create a metadata.yml file in the local cached tree for every package. This permits to speedup parsing, reading directories in parallel and load in memory only the needed data. When I will begin to rewrite luet-build binary too the repository tarball will be organized already with this structure to avoid also the unique parsing after luet repo update.


  • with this release are been integrated hidden command related to the miner subcommands that permits to work at low level with install/remove of the packages from the luet database. This are like emergency commands to use only when you know what you do. But at the moment is the only way to reinstall full packages without receive a OOM exception. The command luet reinstall $(luet s --installed .) with more of 3000 package explode your system. Using miner subcommands will permits a full recovery of your system. With the Part 2 of the refactor the current logic of the command reinstall, install, uninstall will be reviewed to permits a normal use.