================================================================================
Version: 3.3.21
Patch: 00
Date: 2022-08-22
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

A small point release, some nice enhancements, a few bug fixes, and some fixes
to correct or update some issues. Main new features: 
* -rx,-rxx,-ra/-Ix,-Ixx,-Ia: enhanced Packages: report
* -Cxx: microarchitecture level. This is a relatively new convention, used to 
set various compile flags.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. Can't safely look for pm tool KDE Discover because apt calls it 
plasma-discover, but other packaging systems call it discover, which is already 
a non-related program (hardware data). Since it's not really core to any package 
manager, it's not really a necessary thing to report anyway, though 
gnome-software is added because that appears to be more like syntaptic than 
anything else. 

There's also a qt variant of the rpm packagekit, packagekit-qt, which is 
available in for example Arch, but again, it's too granular, and not really 
core.

2. At some point, sensors should add /sys hwmon sensor data, then switch to 
using lm-sensors as a fallback, and remove one recommended tool from newer linux 
systems. I don't think that's too hard, just a bunch of little steps to 
integrate that into the main logic.

--------------------------------------------------------------------------------
BUGS:

1. For Slackware slackpkg/pkgtool:
a: Failed to show package counts at all because of bad globbing path, forgot /*.
b. Failed to show lib counts for packages due to having wrong counter for path. 

2. If no ipmi sensor data was found but the tools are present, could result in 
an undefined hash reference error for sensors. The most likely cause for this is 
that one of the ipmi commands:
"ipmi-tool sensors" or "ipmi-sensors"
had an error, and since errors are sent to /dev/null, inxi saw null data, then 
returned an undefined value instead of the hash reference it was supposed to. 
This is the first time I've seen this happen with ipmi, but there have not been 
a lot of ipmi samples.

[update: the bug was running ipmitool sensors instead of ipmitool sensor]

Thanks issue poster #274 for having systems that triggered this scenario.

3. $source for ipmi was set to lm-sensors by accident.

4. For sensors, with > 1 sensor type, like lm-sensors + ipmi, sensor data from 
second sensor type was getting written to first sensor type row. See Fixes 9 for
more sensors fixes.

--------------------------------------------------------------------------------
FIXES:

1. Force CPU bits to 64 if LM flag is present, if it reports as i686. This fix 
only runs for non RISC CPUs that show as 32 bit, so it won't run very often. If 
no LM found, remains 32 bit.

This fix goes along with enhancement 1, which only applies to 64 bit CPUs.

2. In --recommends, JSON::PP module package names were wrong, they were copied
from JSON::Cpanel::XS and hadn't been changed to the right package names. Note 
that for most distros, this is in Perl Core Modules, but not all.

3. Samsung ram vendor id was too tight, loosened it up a bit. Missed this one:
K3LK7K70BM

4. With Bug 1, extended possible package manager tool detection for slackware 
type systems. Slackware is kind of unique in that it is not actually made out of 
a core package manager as a collection of packages, but uses package managers as 
a kind of layer on top of that, but none of those tools is required to run the 
system.

5. Found another corner case indentation glitch, was adding in level 2 on -I
which is has no second level indentation.

6. Forgot to add $force{'pkg'} to -v8.

7. Small fix, if -Z is used, forgot to force --zl, --zu, --zv to false as well
as -z.

8. Small fix, for saphire rapids, alder lake, added + to year built, since those
are ongoing.

9. Sensors:
a. in one case, with an array of fan speeds, set to '' instead of undef, which 
made test fail, and showed empty fan item. 
b. added wildcards for possible voltage/power matches, was too restrictive for 
ipmi sensors values.
c. added better space regex for ipmi temps [\s_-]?
d. DIMM voltage/temp excluded > 9 numbering, like DIMM 19

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. New feature: -Cxx shows for AMD / Intel 64 bit CPUs the microarchitecture 
level (v1,v2,v3,v4). v1 is baseline. GCC supports this I believe in latest 
versions, and some distros use it to determine CPU support levels for compile 
time optimizations. This was introduced in 2020 via a collaboration between AMD, 
Intel, SUSE, and Redhat. Now you know. This is a simple test based on which CPU 
flags/features are present.

These levels can be used for Go language optimization (GOAMD64), GCC 
optimization switches (GCC -O2 for example), and probably more. 

2. Expanded YMTC (Yangtze Memory) RAM vendor ids and detections.

3. Added [unverified] window managers CDE and NsCDE. No data, only using ps aux
method.

4a. Added slax ID to distro id, added slax to system base support. Currently 
only work on slackware based 15.0, not debian based 11.4.

4b. Added SteamOS debian/arch for system  base.

4c. Added os-release VERSION_CODENAME to enhance distro ID data (eg steamos)

5. Added to -ra/-Ia package tools installed report, this goes along with change 
2, which changes apt to dpkg, the low level tool. Now with -a, shows the package 
manager tools installed, like slackpkg, apt, apt-get, dnf, yum, zypper, etc.

rpm installed as secondary pm requires some further tests. Currently known pm
that have tools (and rpm tests if detected):
All these are known to support rpm secondary pm:
* dpkg - Debian, Ubuntu, and apt-rpm based distros like PCLinuxOS, Alt Linux 
* pacman - Arch based distros 
* pkgtool - Slackware based distros
* tce - TinyCore Linux

6. A few more pci product IDs for GPU matches. Slow going.

--------------------------------------------------------------------------------
CHANGES:

1. Changed --pkg to --rpm, the original intention was that this could apply to
more than RPM package manager, but that's the only one that it's used for. This 
leads to unclear output for other distributions where the user might have rpm 
installed alongside their standard package manager.

2. Changed package pm: 'apt' to 'dpkg', to go along with type rpm (suse,redhat) 
and pkgtool (slackware). Note that dpkg is the actual package manager of Debian,
inxi had this wrong, apt interacts with dpkg.

3. Changed -h -a section, to follow after -x, -xx, -xxx, like on man page.

4. For rpm notes, after running some tests to determine whether to use rpm or 
not, will show the rpm note: see --rpm in pm: rpm note:... This allows for 
more granular errors which will be more useful to users.

--------------------------------------------------------------------------------
DOCUMENTATION:

1. Docs were wrong for -ra/-Ia packages, from original when the package report
was only an -a option, but it got moved to -rx, -rxx for basic features, and -a
for advanced features.

2. Updated for --pkg/--rpm and --force rpm/pkg

3. See change 3, I think people tend to miss the sequence of -x, -xx, -xxx, -a
because -a came before -x, -xx, -xxx in -h menu, but on man page, -a correctly 
comes after the -xxx options. Better to be consistent.

--------------------------------------------------------------------------------
CODE:

1. Added convert to change --force rpm/--rpm to switch on $force{pkg}.

2. Refactored package PackageData to be more granular.

--------------------------------------------------------------------------------
-- Harald Hope - Mon, 22 Aug 2022 18:46:23 -0700

================================================================================
Version: 3.3.20
Patch: 00
Date: 2022-07-27
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

A good bug fix, and several very good indentation fixes that had always been 
around, and some of them known. More fine tuning of CPU process/built data. Bit
by bit it's getting filled out.

Thanks again mrmazda for all the suggestions and watchful eyes.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. CPU built, process are not perfect and complete and always right. Like life,
it's not perfect, but it is ok. Help complete the feature if it bothers you.

2. Intel Raptor Lake and related APUs are trickling out, but I have not found 
cpuid data for the cpu, or generation data for the apu. Was hoping to squeeze
that into 3.3.20, but looks like it will have to go into 3.3.21 or later.

--------------------------------------------------------------------------------
BUGS:

1. MrMazda pointed this out, the printer was not correctly indenting long values
in specific cases, not adding indentation level 1 when the key: value pair was
not the last item on the logical line. Subtle, but could hit Device, OpenGL, and
a few other cases.

2. When SMT is disabled, cpu speed from /sys can return <unknown>, which is a 
string, not the numeric value inxi expected. This trips multipe errors when 
speed cleaner is used. Thanks issue #273 reporter iamc for this one. My guess is
all during all cpu testing, none of us thought to disable smt to see what would
happen.

--------------------------------------------------------------------------------
FIXES:

1. On disk vendors, Initio isn't a vendor, it's either a misconfigured ide hdd, 
slave/master wrong, or bad usb controller. Initio is a default controller, not a 
vendor. Added pre-filter in disk_vendor() to remove that string if it appears.

2. Going along with bug 1, finally fixed long standing weakness with long value
wrapping, now continues to build line until it's done, and does not force a new
line after the last long value item.

3. Another glitch where last key: value pair was less than working width, but
total width was greater, was not wrapping correctly.

4. Saw a corner case Intel Core name: Core i7-1165G7 which did not use the 
expected intel (core number)(3 digits), modified to look for 3 digits after core
numer OR 2 digits + letter + digit.

5. Added 'tar' installed test for debugger, found cases in actual distros that
shipped without it in their minimal installs. Times sure have changed!

6. Another Centos type change, amazingly, this was shipped without lspci as 
well! No idea what went into the install ISO if this stuff didn't include the 
most elementary Linux tools. Added lspci missing error if linux and not risc and 
no pci_tool detected. I have to admit this is really surprising to me, I mean, I 
thought the entire purpose of the rhel family was to provide enterprise 
solutions, but to leave out such elementary tools required by every sys admin is 
very difficult to understand. This was centos 7.5. I believe Alma and Rocky 9 
minimal have those basic tools, so that's an improvement, though they didn't 
have tar.

7. Added a '-' between gen and gen number for Intel GPU generation output. Even 
though it's documented as for example gen9.5, it looks odd to see it that way, 
it's easier to read it as gen-9.5 I think.

8. Did same for AMD arch/codes, for numbered arch/codes like Rage 9, easier to 
read as Rage-9. 

9. Extreme corner case spotted by mrmazda, if KDE is started by TDE, inxi showed
Trinity, not KDE-Plasma as the desktop. Further, it failed to show Trinity 
version, maybe because Trinity was not installed?

10. Finally found cause of Tdie vanishing in favor of Tctl, a bad decision to
hide Tdie if Tdie == Tctl, why they did that, I don't know, but at least nwo, 
there will be AMD Zen cpu temp again.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1a. More or less completed verification of AMD cpu microarch/built/process, and
added more accurate fallback cases for stray model IDs.
* family 5h: K5, K6
* family 6h: K7
* family 7h: K8 - mostly done, needs some checks.
* family 10h: K10
* family 11h: K11 Turion X2. Note there is some uncertainy about this family 
name. Built years n/a yet. Mix of K8/K10
* family 12h: K12 Fusion, K10 based, first APU type?

1b. Extended Intel cpu data a bit more as well. Thanks linuxdaddy from slackware
for the research help there.
* family 4: mostly new, fine tuned, granular
* family 5: more granular, better date/process info.
* family 6: built dates added
* family F: corrected some overly specific stuff

2. Tentative support for finit init system (fast init). Runs in /proc/1/comm,
uses initctl, which may have been revived from its upstart days, not sure. Added
potential support for nosh, linux only, don't know how to detect other bsd init
system.

3. Added amd/intel gpu product IDs.

4. Added shortcut --filter-all/--za, activates all filters: -z, --zl, --zu, 
--zv. Why not?

5. Added support for dm types kdmctl and xdmctl, opensuse and maybe redhat use
the latter to start the actual dm running the desktop/wm. You want to see that 
because you need to do systemctl restart xdm to restart the actual dm. Thanks
mrmazda for pointing out this one.

6. Added AlmaLinux, RockyLinux, CentosStream to system base (RHEL derived).

7. Basic Raptor Lake gpu/apu support added, with patterns to detect since few 
product ids yet. Same applies to Arctic and Alchemist, which still have no 
product IDs.

8. More disk vendors and disk vendor ids, never stops - the waters flow on, the
rain falls, then the sun comes out. Until one day it doesn't.

--------------------------------------------------------------------------------
CHANGES:

1. Deprecated --gpu, now it works the same as -Ga, that was too granular and 
nobody would use it I think. Now that the new gpu features are solid, no need
for this special feature.

--------------------------------------------------------------------------------
DOCUMENTATION:

1. Updated docs/inxi-values.txt, it didn't have all the --debug-xxx options 
listed.

2. Split out some BSD data into docs/inxi-bsd.txt.

3. Big update on docs/inxi-init.txt, moved data to it from other files, updated
the init/service tool data.

4. Renamed init-data.txt to inxi-init.txt, renamed cpu-flags to 
inxi-cpu-flags.txt to be more consistent.

5. Updated help, man for new --filter-all option.

6. Updated help and man for --gpu deprecation.

--------------------------------------------------------------------------------
CODE:

1. Moved required perl modules and system programs checks to 
check_required_items() in debugger, why not? Also added an error handler for 
missing required programs, this is really the only one, and only for 
--debug >= 20
This is the only required program test inxi has in it I believe, really amazing
that such a core tool would be left out of an OS today.

2. Removed this redundant block of code from Network device_output() end 
section, that repeated in the main get() so didn't seem to serve any purpose. 
The test in get() is if n!@rows and if !%risc, same as here, so can't see any 
use for it. I'm leaving this here in case that did have some use, but I don't 
see it.

# we want to handle ARM errors in main get
if (!@$rows && !%risc){
	my $key = 'Message';
	my $type = 'pci-card-data';
	if ($pci_tool && $alerts{$pci_tool}->{'action'} eq 'permissions'){
		$type = 'pci-card-data-root';
	}
	@$rows = ({
	main::key($num++,0,1,$key) => main::message($type,'')
	});
}

--------------------------------------------------------------------------------
-- Harald Hope - Thu, 27 Jul 2022 11:58:32 -0700

================================================================================
Version: 3.3.19
Patch: 00
Date: 2022-06-16
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

This is a quick bug fix release, and one other fix, the bug only impact Debian/
Ubuntu distros.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. Nothing new.

--------------------------------------------------------------------------------
BUGS:

1. Two repo_builders could create an undefined array ref situation, one in Antix
I have no idea was triggered since it requires an apt file be not readable but 
existing, which just isn't a normal debian/ubuntu situation. Void linux was the
other. Since those were the only two with a -r file test, there must be some 
case where the file was not readable, though I have no idea what that case might
be.

Further examination showed this can hit all apt based systems, the cause is no
/etc/apt/sources.list file, which is a possible scenario across all apt systems.

--------------------------------------------------------------------------------
FIXES:

1. Blacklisted all apcitz sensors that are not acpitz-virtual, which is the cpu
temp. This may help resolve issues for some users where for example using 
acpitz-acpi, which is not the cpu sensor.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. A few more AMD family F empirical IDs made.

--------------------------------------------------------------------------------
CHANGES:

1. None.

--------------------------------------------------------------------------------
DOCUMENTATION:

1. Started to split/merge inxi-data.txt and inxi-resources.txt into topic 
specific files, like inxi-sensors.txt, inxi-graphics.txt, etc. inxi-values and
inxi-resources have just gotten too big over the years.

--------------------------------------------------------------------------------
CODE:

1. Corrected in RepoItem possible use of undefined array references.

2. Finally, a full release tool!! inxi-perl/tools/release.pl. Validates man,
verifies pinxi commands to avoid errors, then updates man/options/changelog 
html pages for smxi.org/docs, and then syncs pinxi* files to inxi*.

--------------------------------------------------------------------------------
-- Harald Hope - Mon, 16 Jun 2022 15:43:00 -0700

================================================================================
Version: 3.3.18
Patch: 00
Date: 2022-06-13
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Bug release, replace 3.3.17 asap, most users will not experience the bug, but if 
they do, inxi stops right before the -D line. Failed to do an if defined test on 
an array ref that could be undefined or an array ref. That makes Perl very 
unhappy!

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. AMD family F, K8 series, will need more granular treatments to get the data 
to be more accurate and less generic. We got 2 IDs nailed from raw visual data 
confirmations and cpuid values, which leaves many, but good start. We will chip 
away (pardon the pun) at these more ambiguous IDs over time, but don't need to 
get them all done instantly, just eventually. Thanks slackware person linuxdaddy 
for doing really good research and actually looking at the cpu to find dates 
etc.

--------------------------------------------------------------------------------
BUGS:

1. Bug, fatal, caused by internal hash/array ref refactor of 3.3.17. Thanks 
alaymari github issue #271 for reporting this one.

--------------------------------------------------------------------------------
FIXES:

1. None except for code fixes to try to avoid the cause of the bug in Bugs 1.

2. Fixed nvidia eol try --gpu, it was showing backwards, with --gpu, not 
without, sigh.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. Added slimski dm data. That's a new fork of SLiM. Also guessing that brzdm
has same version -v output: brzdm version x.xx

--------------------------------------------------------------------------------
CHANGES:

1. None

--------------------------------------------------------------------------------
DOCUMENTATION:

1. Refactors of core docs, ongoing, but will list those next release.

--------------------------------------------------------------------------------
CODE:

1. Cleaned up some array ref handling in subs, returned as: ($var1,$var2) = 
@{block_data(...)}, skipped initializing and creating scalar to hold the ref, 
just use it directly for DiskItem::block_data(). 

2. Also switched to local ref scalar array in DiskItem::scsi_data(), 
DiskItem::block_data(). Not set local array, set local array ref, to keep it 
clear. Also made DriveItem::drive_speed() return straight ref, not array then
ref. Same for many other subs, switched to ref assignment so it's the same ref
all through all the sub and return.

3. Fixed a redundant return \@$data to simply assigning to @$data ref, no return 
needed, in DiskItem::smartctl_data().

4. Tightened some returns of ref so that tests if good test @$ref, not $ref.
Trying to avoid more cases like issue #271.

5. Going along with array ref local/return, switched all hash refs to local hash
ref returning ref, and working local with ref. More efficient, avoids creating 
new refs over and over, dugh. This made a particularly large difference in CPU 
because in certain parts, new references were being created over and over, and 
subs were returning like \@arr or \%hash instead of declaring to start:
my $arr = []; my $hash = {};

Then working with the data from there on as an array or hash reference, to the 
same original reference, rather than creating new ones over and over, which Perl
then has to track til they expire.

--------------------------------------------------------------------------------
-- Harald Hope - Mon, 13 Jun 2022 11:22:20 -0700

================================================================================
Version: 3.3.17
Patch: 01
Date: 2022-06-10
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Rollout of advanced microarchitecture info continues, added AMD/Intel gfx 
devices, CPU built dates, process nodes, generation (in some cases, where it 
makes sense), etc.

Please note: the 3.3.16 > 17 releases require manual matching table updates. If 
you think disk or ram vendor, CPU or GPU process, release date, generation, etc, 
information is not correct: 

* FIRST: do the research, confirm it's wrong, using wikichips, techpowerup, 
wikipedia links, but also be aware, sometimes these slightly contradict each-
other, so research. Don't make me do all your work for you.

* Show the relevant data, like cpu model/stepping, to correct the issue, or 
model name string.

* There are 4 main manually updated matching tables, which use either raw regex 
to generate the match based on the model name (ram, disk vendors), or vendor id 
matching (ram vendors), product id matching (gpu data), or cpu family / model / 
stepping id matching. Each of these has its own matching tool at: 
  inxi-perl/tools/[tool-name].pl 
which is used to generate either raw data used by the functions (ids for gpu 
data), or which contains the master copy of the function used to generate the 
regex matches (cp_cpu_arch/set_ram_vendors/set_disk_vendors).

* Please use pinxi and inxi-perl branch for this data, inxi is only released 
when next stable is done, all development is done in inxi-perl branch. All 
development for the data or functions these tools are made for occurs in the 
tools, not in pinxi, and those results are moved into pinxi from the tools.

* Saying something "doesn't work" is not helpful, provide the required data for 
the feature that needs updating, or ideally, find the correct answer yourself 
and do the research and then provide the updated data for matching.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. GPU/CPU process node sizes are marketing, not engineering, terms, but 
work-around is to list the fab too so you at least know which set of marketing 
terms you're dealing with. As of around 7nm, most of the fabs are not using nm 
in their names anymore, TSMC is using n7, Intel 7, for example. While these 
marketing terms do reflect changes from the previous process node, more 
efficient, faster, faster per watt, and so on, and these changes are often quite 
significant, 10-30%, or more, they do not reflect the size of the transistor 
gate like they used to up until about 350nm. Intel will move to A20 for the node 
after 4 or 5, 2nm, meaning 20 angstroms.

Intel suggested million transistors per mm^2 as an objective measure (currently 
around 300+ million!! as of ~7nm), but TSMC didn't take them up on it.

GlobalFoundries (GF) stepped away from these ultra small processes at around 
14nm, so you won't see GF very often in the data. AMD spun off its chip fabs to 
GF aound 2009, so you don't see AMD as foundry after GF was formed. ATI always 
used TSMC so GPU data for AMD/ATI is I think all TSMC. Intel has always been its 
own foundry.

2. Wayland drops all its data and can't be detected if sudo or su is used to run 
inxi. That's unfortunate, but goes along with their dropping support for > 1 
user, which was one of the points of wayland, same reason you can do desktop 
sharing or ssh desktop forwarding etc. This means inxi doesn't show wayland as 
Display protocol, it is just blank, if you use su, or sudo start. This makes 
some internal inxi wayland triggers then fail. Still looking to see if there is 
a fix or workaround for this.

3. In sensors, a new syntax for k10-pci temp, Tctl, which unfortunately is the
only temp type present for AMD family 17h (zen) and newer cpus, but that is not
an actual cpu temp, it's:
https://www.kernel.org/doc/html/v5.12/hwmon/k10temp.html

"Tctl is the processor temperature control value, used by the platform to 
control cooling systems. Tctl is a non-physical temperature on an arbitrary 
scale measured in degrees. It does _not_ represent an actual physical 
temperature like die or case temperature."

Even worse, it replaced Tdie, which was, correctly, temp1_input, and, somewhat
insanely, the non real cpu temp is now temp1_input, and if present, the real
Tdie cpu temp is temp2_input. I don't know how to work around this problem.

--------------------------------------------------------------------------------
BUGS:

1. Fallback test for Intel cpu arch was not doing anything, used wrong variable
name.

2. A very old bug, thanks mrmazda for spotting this one, runlevel in case of 
init 3 > init 5 showed 35, not 5. Doesn't show on systemd stuff often since it
doesn't use runlevels in this way, but this bug has been around a really long
time. 

3. SensorItem::gpu_data was always logging its data, missing the if $b_log.

--------------------------------------------------------------------------------
FIXES:

1. Fixed some disk vendor detection rules.

2. Failing to return default target for systemd/systemctl when no:
 /etc/systemd/system/default.target
file exists. Corrected to use systemctl get-default as fallback if file doesn't
exist.

3. Fixed indentation for default: runlevel, should be child of runlevel: / 
target:

4. Fixed corner case where systemd has no /proc/1/comm file but is still the
init system. Added fallback check for /run/systemd/units, if that exists, safe
to assume systemd is running init.

5. Fixed subtle case, -h/--recommends/--version/--version-short should not print 
to -y1 width, but rather to the original or modified widths >= 80 cols. 
Corrected this in print_basic() by using max-cols-basic.

6. Forgot to add --pkg, --edid, and --gpu to debugger run_self() tool.

7. Fixed broken sandisk vendor id.

8. Finally found docs that explain, for some terrible reason, if Tctl and Tdie
are the same, sensors or kernel does not show Tdie, sigh...

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. Added AMD and Intel GPU microarchitecture detections for -Gx. These are not 
as easy as Nvidia because there is no one reliable data source for product ids.

2. Going with the -Ga process: .. built: item, -Ca will show process: [node] and 
built: years and sometimes gen: if available. Geeky, sure, not always perfect, 
or correct, but will generally be close. Due to difficultly in finding reliable 
release > build end years for example, not all cpus have all this data.

Using CPU generation,where that data is available and makes sense. Like AMD 
Zen+ is zen gen: 2, for example,. Because Intel microarch names are often 
marketing driven, not engineering, it's too difficult to assign gen consistently 
based only on model names. Shows for Core intels like: gen: core 3

That will cover most consumer Intel CPU users currently. 

3. Added initial Zen 3+ and Zen 4 ids for cp_cpu_arch(). There is very little 
info on these yet, so I'm going on what may prove to be incomplete or wrong 
data.

4. Added GPU process, build years for -Ga.

5. Added fallback test for gpus that we don't have product IDs for yet because
dbs have not been updated. Only used for cases where it's the newest gpu series
and no prodoct IDs have been found.

6. Added AMD am386 support to cp_cpu_arch... ok ok, inxi takes 9 minutes to 
execute on that, but there you have it.

7. Added unverified Hyprland wayland compositor detection.

8. By request, added --version-short/--vs, which outputs version info in one 
line if used together with other options and if not short form. With any normal
line option, will output version (date) info first line, without any other 
option, will output 1 line version info and exit.

9. More disk vendors, ids! Much easier with new tool disk_vendors.pl.

--------------------------------------------------------------------------------
CHANGES:

1. Deprecated --nvidia/--nv in favor of more consistent --gpu, that's easier to
work with multiple vendors for advanced gpu architecture. Note for non nvidia,
--gpu only adds codename, if available and different from arch name. For nvidia,
it adds a lot more data.

2. Changed inxi-perl/tools tool names to more clearly reflect what function they
serve.

3. Going with runlevel fixes, changed 'runlevel:' to be 'target:' if systemd.
Also changed incorrect 'target:' for 'default:'.

--------------------------------------------------------------------------------
DOCUMENTATION:

1. Updated man, help, docs/inxi-data.txt for new gpu data and tools, and to 
indicate switch to more generic --gpu trigger for advanced gpu data, instead of
the now deprecated --nvidia/--nv, which probably will go down as the shortest 
lasting option documented, though of course inxi always keeps legacy syntax 
working, behind the scenes, it's just removed from the -h and man page in favor
of --gpu. Also updated to show AMD/Intel/Nvidia now, since the data now roughly
works for all three main gpus.

2. Updated pinxi README.txt to reflect the tools and how to use them and what
they are for.

3. --help, man, updated for target/runlevel, default: changes for init data.

4. Updated configuration html and man for --fake-data-dir.

--------------------------------------------------------------------------------
CODE:

1. Upgraded tools/gpu_ids.pl to handle nvidia, intel, or amd data, added data 
files in tools/lists/ for amd. First changed name from ids.pl to gpu_ids.pl

2. New data files added for amd/intel pci ids, and a new tool to merge them and 
prep them for gpu_ids.pl -j amd|intel handling. All work. Took a while to get 
these things sorted, but don't want to get stuck in future with manual updates, 
it needs to be automated as much as possible, same as with disk_vendors.pl etc, 
if I'm going to try to maintain this over time.

3. Made all gpu data file names use consistent formats, and made disk data files 
also follow this format. 

4. Changed raw_ids.pl to gpu_raw.pl, trying to keep things easy to remember and
consistent here.

5. Refactored core gpu data logic, now all types use the same sub, and just
assign various data depending on the type.

6. Changed vendors.pl name to disk_vendors.pl

7. Big redo of array/hash handling in OutputHandler, was partially by reference, 
now is completely by reference. All Items now use and return $rows array ref as 
well, from start to finish, unlike previously, where @rows was copied 
repeatedly.

8. Going along with 7, made most internal passing of hash/arrays use hash/array
references instead, where it makes sense, and doesn't make the code harder to
work with.

9. Refactored WeatherItem, split apart the parts from output to be more like
normal Items in terms of error handling etc.

10. Added 'ref' return option for reader() and grabber(). Only useful for very
large data sets, added also default 'arr' if no value is provided for that
argument.

11. Switched some features to use grabber/reader by ref on the off chance that
will dump some execution time.

12. A few places added qr/.../ precompiled regex, in simple form, for loops,
maybe it helps a little. I don't know.

13. Added global $fake_data_dir, this can be changed via configuration item:
FAKE_DATA_DIR or one time by --fake-data-dir.

14. Created data directory, and initial data items. cpu is the fake data used to 
test CPU info. More will be added as data is checked and sanitized.

--------------------------------------------------------------------------------
-- Harald Hope - Fri, 10 June 2022 13:05:17 -0700

================================================================================
Version: 3.3.16
Patch: 00
Date: 2022-05-19
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

A nice release, some good corner case bug and glitch fixes, along with some much
needed documentation fixes to bring inxi-values.txt up to date for changes that
have been evolving steadily. And a useful option for nvidia legacy card info.

I'm hoping that will help support people and users as nvidia open source driver
gets more usable in the future, since that will never support legacy cards, only
the current series supported by 510/515 drivers.

Also, in inxi-perl/tools, new tools and data so you can reproduce certain arcane
data assembly features like disk vendors and nvidia product ids.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. Not known yet if you can get Wayland display drivers along with kernel gpu
drivers. In other words, is a similar use of kernel/display driver as in Xorg
found with Wayland? Hard to dig up actual answers to questions like this.

2. Similarly, unknown if it's possible to get current active xorg display 
driver, not just the list from Xorg.0.log file. No idea how to discover that,
there are cases where past use of Xorg leaves log file present, but drivers are
not used with Wayland, leading to confusing driver reports. Issues 1 and 2 are 
similar but probably have similar solutions.

--------------------------------------------------------------------------------
BUGS:

1. Very subtle failure caused by odd mount point in partitions: a too loose 
regex rule designed to capture spaces in device names was running loose to the 
end of the string, where it was triggered by a number in the mount point. 

Fix was to make rule much more strict, now needs to match 3 number space in a 
row after the initial part, and then a number%

2. Bug in corner case, with Monitors, if > 2 connected monitors, and 1 disabled,
inxi was trying to test numeric position values for the disabled monitor, which
with xrandr, has no position values, thus tripping undefined pos-x and pos-y 
errors. Thanks to fourtysixandtwo for spotting this corner case.

3. Bug in wan IP, if dig failed, set_dowloader() is not set unless other 
parameters were used, which results in failing to set parameters for downloader,
which leads to screen errors spraying out. Thanks to Manjaro user exaveal for 
posting this issue, with error outputs, which helped pinpoint the cause.

--------------------------------------------------------------------------------
FIXES:

1. More absurd xorg port ID variations: DP-1 kernel, DP1-1 X driver. Wny? 
Trying to add in XX-?\d+-\d+ variation, which I think will be safe, made the 
first - optional, though it's just idiotic for this amount of randomness to be
allowed to exist in the 21st century. If this reflects other discipline failures
in Xorg, it starts to get somewhat more obvious why Wayland was considered as
the only forward path, though that's just as chaotic and disorganized... but in
different ways.

2. Removed darwin distro version detection, which of course broke, and using
standard fallback for BSD made out of uname array bits. If it works, it works,
if not, who cares. This should handle issue #267 hopefully.

3. Trying for more monitor matches, now in cases where 1 monitor display ID
remained unmatched, and 1 sys kms id remains unused, assume the remaining 
nonitor ID is a match and overwrite the unmatched message for that ID. This
will cover basically all single monitor match failure cases, and many multi
monitor failures with only 1 out of x monitor ids unmatched. While guessing a 
bit, it's not a bad guess, and will slightly expand the number of matched
monitor ids. This extends the previous guess where if single monitor and 
unmatched, use it to cover > 1 monitors, with 1 unmatched.

4. LINES_MAX configuration item did not assign to right variable when -1 value.
Used non-existing $size{'output-block'} instead of correct $use{'output-block'}

5. Forgot to add pkg to --force, goes with --pkg.

6. Finally! Added in busybox shell detection, it's not of course reliable if 
they change internal light shells, but all the docs say they use ash, so now
it will show shell: ash (busybox) to make it clear. Hurray!! This means that
tinycore users will get this long awaited feature! Ok, ok, long awaited by 
probably only me, but since I package inxi for TinyCore, it was on my todo list.

7. Cleaned up and re-organized many disk vendor matching rules, made them easier
to read and debug, going along with Code 3, vendors.pl development and release.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. New feature: in -Ga, if Nvidia card, shows last supported nvidia legacy 
series driver (like 304.xx), status, microarch. If --nvidia and EOL, shows 
last-supported: kernel: xorg: info. This should be useful for support people, 
we'll see.

-Gx shows nvidia microarchitecture, if it was found. This is based on matching
tables so will go out of date if you have non current inxi's, but that's life.

If --nvidia or --nv shortcut is used instead, triggers -Ga and shows much more 
nvidia driver data for legacy, and for EOL drivers, last supported kernel, xorg, 
and last release version. --nvidia also adds process node if available.

More important perhaps is the fact that as of May 2022, nvidia is starting the 
process of open sourcing its current latest driver (515, but Turing, Ampere 
architectures only so far), which will only support non legacy nvidia cards, 
making detection of legacy cards even more important to support people and end 
users, since that will be a common question support people will have: does my 
card support the open source driver?"

Read about the new open sourcing of the 515 nvidia module:
https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/
https://github.com/NVIDIA/open-gpu-kernel-modules
https://www.phoronix.com/scan.php?page=article&item=nvidia-open-kernel&num=1

2. Going along with new and upgraded tools in Code 3, massive, huge, upgrade to
disk vendors, 100s of new matches, biggest upgrade ever for disk vendors. This
feature should work much better now with the new backend tools.

3. Added shortcuts: --mm for --memory-modules, --ms for --memory-short.

--------------------------------------------------------------------------------
CHANGES:

1. None.

--------------------------------------------------------------------------------
DOCUMENTATION:

1. Big update to docs/inxi-values.txt. This had gotten really out of date, with
incorrect hash and other internal data assignments, all updated to be current,
along with sample greps to make it easier to locate changes in the future as 
well. This makes this document fairly up to date and useful again for dev 
reference purposes, should such a dev ever appear, lol. Many values had not
been updated after global refactors, like switching to the %risc data for all
arm/mips/ppc platform types, and making %load, %use, %force, %fake uses more
consistent. Doing this helped expose some subtle bugs and failure cases in
inxi as well.

2. Added to -h and man -Ga Nvidia option info. Fixed some typos and glitches. 
Includes new --nvidia / --nv options for full data.

--------------------------------------------------------------------------------
CODE:

1. Changed $dl{'no-ssl-opt'} to $use{'no-ssl'} and $dl{'no-ssl'}, that was a 
confusing inconsistency.

2. Added comma separated list of --dbg numbers, since often > 1 is used. Saves
some debugging time, otherwise nothing changes.

3. Huge new public release of some back end tools in new section: 
inxi-perl/tools
* vendors.pl - disk vendors tool, with data in lists/disks*.txt
* ids.pl - nvidia product id generator tool, with data in lists/nv_*

4. While doing vendors.pl, I noticed that the use of array ref for $vendors was
not done correctly, that's fixed now, simplifies it slightly.

--------------------------------------------------------------------------------
-- Harald Hope - Thu, 19 May 2022 13:02:00 -0700

================================================================================
Version: 3.3.15
Patch: 00
Date: 2022-04-08
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Bug fix, it's a bad edid data bug, rare, but when it trips, kills inxi execution 
dead right before -G/Graphics shows. Also some nice fixes and enhancements.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. Possible case of Gnome Wayland failing to set any gnome environmental 
variables, making wayland detection not possible. This was in anonymous dataset 
inxi-proBook4540s dataset. Person never appeared in real life so can't follow up 
on it. This cascaded down to other failures in display detection, and desktop 
detection, though in theory much of the data needed was present. I expect 
similar issues may appear with kde wayland. This is/was probably a configuration 
or build error I believe, though not enough data yet.

It appears that sudo start disabled the display environmental variable 
detections, which is unfortunate, and the fallback loginctl tests do not appear
to work for unknown reasons. I've confirmed this on Fedora stock Gnome as well.

--------------------------------------------------------------------------------
BUGS:

1. Forgot to test that return from get_display_manager is array ref, this 
impacts only a tiny handful of distros probably, TinyCore was one, but it is a 
fatal failure, so fixed it. Never trips in console, only on tiny linux where no 
dm is used at all. Tripped with Xvesa, seen other bug reports, but not enough
data to know for sure.

[2022-04-09 update] It turns out that basically when $DISPLAY is set, but no DM
detected, for example starting wayland sway from tty, the issue also appeared.
See Debian issue:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1009089
inxi currently has no way to detect a tty start of a wayland compositor, or of
xvesa, so this was an entire class of bug, corrected, but not actually handled.
Ideally inxi could detect a tty compositor start, though technically showing
dm: N/A is correct since there is none running, but dm: tty-start would be nicer
since it would be more informative. But do not know how to do that yet.

2. EDID errors and warnings had several bugs, errors a fatal critical bug which
made execution stop. Had forgotten to pass the $edid hash reference to the error
constructor. Also had used wrong hash key in output so would never have shown.

--------------------------------------------------------------------------------
FIXES:

1. Corrected ram device indentation levels.

2. Made memory width more clear with: width: data: total: which more
accurately reflects the source data. Also in cases where no data or total 
values, only show width: N/A, not the data: total: sub items.

3. Made edid errors/warnings output to numbered list of warnings/errors instead
of using join() to made one long list. Much more consistent that way. This fixes
issue #266 - thanks SheridanOAI for finding this bug.

4. In --slots, -x wasn't loading the bus ID so it showed N/A, unnecessary data 
collection granularity, removed.

5. For Display, if no X or gpu driver, show: driver: N/A. Showed driver: gpu: 
N/A before.

