aboutsummaryrefslogtreecommitdiffstats
path: root/inxi.changelog
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2020-12-16 17:29:29 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2020-12-16 17:29:29 -0500
commit4b11751827c1d51f555e544ac40112c4fb07bdd4 (patch)
treef7783f9fc27124cbb0f976624c3379346e8b0c7c /inxi.changelog
parentbba7744364ffcc389d0be7a9c147ea55e84510f6 (diff)
New upstream version 3.2.00-1.upstream/3.2.00-1
Diffstat (limited to 'inxi.changelog')
-rw-r--r--inxi.changelog384
1 files changed, 384 insertions, 0 deletions
diff --git a/inxi.changelog b/inxi.changelog
index 6a07097..739e38e 100644
--- a/inxi.changelog
+++ b/inxi.changelog
@@ -1,4 +1,388 @@
=====================================================================================
+Version: 3.2.00
+Patch: 00
+Date: 2020-12-15
+-----------------------------------
+Changes:
+-----------------------------------
+
+Huge upgrade, major rewrite/refactor, new features, everything is polished!!!
+
+Note that due to large number of internal changes to code, a separate
+INTERNAL CODE CHANGES section is at the bottom. Those are changes which in
+general do not impact what users see that much, but which definitely impact
+working on and with inxi! They also make errors less likely, and removed many
+possible bad data error situations.
+
+BUGS:
+
+1. Obscure, but very old Tyan Mobo used a form of dmidecode data for RAM that I'd
+never gotten a dataset for before, this tripped a series of errors in inxi, which
+were actually caused by small errors and failures to check certain things, as
+well as simply never assigning data in corner cases. This system used only dmi
+handles 5 and 6, which is a very rare setup, from the very early days of dmi
+data being settled, but it was valid data, and actually inxi was supposed to support
+it, because I'd never gotten a dataset containing such legacy hardware data, the
+support didn't work. There were actually several bugs discovered while tracking
+this down, all were corrected.
+
+2. Going along with the cpu fixes below, there was a bug that if stepping was 0,
+stepping would not show. I had not realized stepping could be 0, so did a true/false
+test instead of a defined test, which makes 0 in perl always test as false. This is
+corrected.
+
+3. While going through code, discovered that missing second argument to main::grabber
+would have made glabel tool (BSD I think mostly) always fail, without exception.
+That explains why bsd systems were never getting glabel data, heh.
+
+4. Many null get_size tests would not have worked because they were testing
+for null array but ('','') was actually being returned, which is not a null array.
+The testing and results for get_size were quite random, now they are all the same
+and consistent, and confirmed correct.
+
+5. In unmounted devices, the match sent to @lsblk to get extended device data
+would never work with dm-xx type names, failed to translate them to their
+mapped name, which is what is used in lsblk matches, this is corrected.
+This could lead to failures to match fs of members of luks, raid, etc,
+particularly noticeable with complex logical device structures. This means
+the fallback filters against internal logic volume names, various file system
+type matches, would always fail.
+
+6. A small host of further bugs found and fixed during the major refactor, but
+not all of them were noted, they were just fixed, sorry, those will be lost
+to history unless you compare with diffs the two versions, but that's thousands
+of lines, but there were more bugs fixed than listed above, just can't remember
+them all.
+
+FIXES:
+
+1. There was some ambiguity about when inxi falls back to showing hardware graphics
+driver instead of xorg gfx driver when it can't find an xorg driver. That can happen
+for instance because of wayland, or because of obscure xorg drivers not yet supported.
+Now the message is very clear, it says the gfx software driver is n/a, and that it's
+showing the hardware gfx driver.
+
+2. Big redo of cpu microarch, finally handled cases where same stepping/model ID
+has two micorarches listed, now that is shown clearly to users, like AMD Zen family
+17, model 18, which can be either Zen or Zen+, so now it shows that ambiguity, and
+a comment: note: check, like it shows for ram report when it's not sure. Shows
+for instance:
+arch: Zen/Zen+ note: check
+in such cases, in other words, it tells users that the naming convention
+basically changed during the same hardware/die cycle.
+
+3. There were some raid component errors in the unmounted tests which is supposed
+to test the raid components and remove them from the mounted list. Note that inxi
+now also tests better if something is a raid component, or an lvm component, or
+various other things, so unmounted will be right more often now, though it's still
+not perfect since there are still more unhandled logical storage components that
+will show as unmounted when tney are parts of logical volumes. Bit by bit!!
+
+4. Part of a significant android fine tuning and fix series, for -P, android uses
+different default names for partitions, so none showed, now a subset of standard
+android partitions, like /System, /firmware, etc, shows. Android will never work
+well though because google keeps locking down key file read/search permissions in
+/sys and /proc.
+
+5. More ARM device detections, that got tuned quite a bit and cleaned up, for
+instance, it was doing case sensitive checks, but found cases where the value
+is all upper case, so it was missing it. Now it does case insensitive device type
+searches.
+
+6. One of the oldest glitches in inxi was the failure to take the size of the raid
+arrays versus the size totals of the raid array components led to Local Storage
+results that were uselessly wrong, being based on what is now called 'raw' disk
+totals, that's the raw physical total of all system disks. Now if raid is detected
+the old total: used:... is expanded to: total: raw:... usable:....used:, the usable
+being the actual disk space that can be used to store data. Also in the case of
+LVM systems, a further item is added, lvm-free: to report the unused but available
+volume group space, that is, space not currently taken by logical volumes. This
+can provide a useful overview of your system storage, and is much improved over
+the previous version, which was technically unable to solve that issue because
+the internal structures did not support it, now they do. LVM data requires sudo/
+root unfortunately, so you will see different disk raw totals depending on
+if it's root or not if there is LVM RAID running.
+
+Sample: inxi -D
+Drives: Local Storage: total: raw: 340.19 GiB usable: 276.38 GiB
+ lvm-free: 84.61 GiB used: 8.49 GiB (3.1%)
+
+lvm-free is non assigned volume group size, that is, size not assigned
+to a logical volume in the volume group, but available in the volume group.
+raw: is the total of all detected block devices, usable is how much of that
+can be used in file systems, that is, raid is > 1 devices, but those devices
+are not available for storage, only the total of the raid volume is.
+Note that if you are not using LVM, you will never see lvm-free:.
+
+7. An anonymous user sent a dataset that contained a reasonable alternate
+syntax for sensors output, that made inxi fail to get the sensors data. That was
+prepending 'T' to temp items, and 'F' to fan items, which made enough sense though
+I'd never seen it before, so inxi now supports that alternate sensors temp/fan
+syntax, so that should expand the systems it supports by default out of the box.
+
+8. Finally was able to resolve a long standing issue of loading File::Find, which
+is only used in --debug 20-22 debugger, from top of inxi to require load in the
+debugger. I'd tried to fix this before, but failed, the problem is that redhat
+/fedora have broken apart Perl core modules, and made some of them into external
+modules, which made inxi fail to start due to missing use of required module that
+was not really required. Thanks to mrmazda for pointing this out to me, I'd tried
+to get this working before but failed, but this time I figured out how to recode
+some of the uses of File::Find so it would work when loaded without the package
+debugger, hard to figure it, turned out a specific sub routine call in that
+specific case required the parentheses that had been left off, very subtle.
+
+9. Subtle issue, unlike most of the other device data processors, the USB
+data parser did not use the remove duplicates tool, which led in some cases
+to duplicated company names in the output for USB, which looks silly.
+
+10. Somehow devtmpfs was not being detected in all cases to remove that from
+partitions report, that was added to the file systen filters to make sure it
+gets caught.
+
+11. Removed LVM image/meta/data data slices from unmounted report, those are LVM
+items, but they are internal LVM volumes, not available or usable. I believe
+there are other data/meta type variants for different LVM features but I have
+added as many types as I could find.. Also explictly now remove any _member type
+item, which is always part of some other logical structure, like RAID or
+LVM, those were not explicitly handled before.
+
+12. Corrected the various terms ZFS can use for spare drives, and due to how
+those describe slightly different situations than simply spare, changed the spare
+section header to Available, which is more accureate for ZFS.
+
+ENHANCEMENTS:
+
+1. Going along with FIX 2 is updating and adding to intel, elbrus microarch family/
+model/stepping IDs (E8C2), so that is fairly up to date now.
+
+2. Added in a very crude and highly unreliable default fallback for intel:
+/sys/devices/cpu/caps/pmu_name which will show the basic internal name used
+which can be quite different from what the actual microarch name is, but the hope
+is that for new intel cpus that come out after these last inxi updates, something
+may show, instead of nothing. Note these names are often much more generic, like
+using skylake for many different microarches.
+
+3. More android enhancements, for androids that allow reading of /system/build.prop,
+which is a very useful informative system info file, more android data will show,
+like the device name and variant, and a few other specialized items. You can see if
+your android device lets inxi read build.prop if you see under -S Distro:
+Android 7.1 (2016-07-23) or just Android. If it shows just android, that means
+it can't read that file. Showing Android however is also new, since while inxi
+can't always read build.prop, if that file is there, it's android, so inxi
+finally can recognize it's in android, even though it can't give much info if
+it's locked down. Inxi in fact did not previously know it was running in android,
+which is quite different from ARM systems in some ways, but now it does.
+
+If the data is available, it will be used in Distro: and in Machine: data to add
+more information about the android version and device.
+
+4. A big one, for -p/-P/-o/-j now shows with -x the mapped device name, not just
+the /dev/dm-xx ID, which makes connecting the various new bits easier, for RAID,
+Logical reports. Note that /dev/mapper/ is removed from the mapped name since
+that's redundant and verbose and makes the output harder to read. For mapped
+devices, the new --logical / -L report lets you drill into the devices to find
+out what dm-xx is actually based on.
+
+5. More big ones, for -a -p/-P/-o/-j/-R/-L shows kernel device major:minor
+number, which again lets you trace each device around the system and report.
+
+6. Added mdadm if root for mdraid report, that let me add a few other
+details for mdraid not previously available. This added item 'state;'
+to the mdraid report with right -x options.
+
+7. Added vpu component type to ARM gfx device type detection, don't know
+how video processing vpu had escaped my notice.
+
+8. Added fio[a-z] block device, I'd never heard of that before, but saw
+use of it in dataset, so learned it's real, but was never handled as a
+valid block device type before, like sda, hda, vda, nvme, mmcblk,
+etc. fio works the same, it's fio + [a-z] + [0-9]+ partition number.
+
+9. Expanded to alternate syntax Elbrus cpu L1, L2, L3 reporting. Note
+that in their nomenclature, L0 and L1 are actually both L1, so add those
+together when detected.
+
+10. RAM, thanks to a Mint user, antikythera, learned, and handled something
+new, module 'speed:' vs module 'configured clock speed:'.
+To quote from supermicro:
+
+<<<
+Question: Under dmidecode, my 'Configured Clock Speed' is lower than my
+'Speed'. What does each term mean and why are they not the same?
+Answer: Under dmidecode, Speed is the expected speed of the memory
+(what is advertised on the memory spec sheet) and Configured Clock Speed
+is what the actual speed is now. The cause could be many things but the
+main possibilities are mismatching memory and using a CPU that doesn't
+support your expected memory clock speed.
+Please use only one type of memory and make sure that your CPU supports
+your memory.
+>>>
+
+11. Since RAM was gettng a look, also changed cases where ddr ram speed is reported
+in MHz, now it will show the speeds as: [speed * 2] MT/S ([speed] MHz). This
+will let users make apples to apples speed comparisons between different systems.
+Since MT/S is largely standard now, there's no need to translate that to MHz.
+
+12. And, even more!! When RAM speeds are logically absurd, adds in note: check
+This is from a real user's data by the way, as you can see, it triggers all
+the new RAM per Device report features.
+
+Sample:
+Memory:
+ RAM: total: 31.38 GiB used: 20.65 GiB (65.8%)
+ Array-1: capacity: N/A slots: 4 note: check EC: N/A
+ Device-1: DIMM_A1 size: 8 GiB speed: 1600 MT/s (800 MHz)
+ Device-2: DIMM_A2 size: 8 GiB speed: spec: 1600 MT/s (800 MHz)
+ actual: 61910 MT/s (30955 MHz) note: check
+ Device-3: DIMM_B1 size: 8 GiB speed: 1600 MT/s (800 MHz)
+ Device-4: DIMM_B2 size: 8 GiB speed: spec: 1600 MT/s (800 MHz)
+ actual: 2 MT/s (1 MHz) note: check
+
+13. More disks vendor!!! More disk vendor IDs!!! Yes, that's right, eternity
+exists, here, now, and manifests every day!! Thanks to linux-lite hardware
+database for this eternally generating list. Never underestimate the
+creativity of mankind to make more disk drive companies, and to release
+new model IDs for existing companies. Yes, I feel that this is a metaphore
+for something much larger, but what that is, I'm not entirely clear about.
+
+CHANGES:
+
+1. Recent kernel changes have added a lot more sensor data in /sys, although
+this varies system to system, but now, if your system supports it, you can
+get at least partial hdd temp reports without needing hddtemp or root. Early
+results suggest that nvme may have better support than spinning disks, but it
+really varies. inxi will now look for the /sys based temp first, then fall
+back to the much slower and root / sudo only hddtemp. You can force hddtemp
+always with --hddtemp option, which has a corresponding configuration item.
+
+2. The long requested and awaited yet arcane and obscure feature -L/--logical,
+which tries to give a reasonably good report on LVM, LUKS, VeraCrypt, as well
+as handling LVM raid, both regular and thin, is now working. This took a lot
+of testing, and is a very solid and good start in my view, going from nothing
+to something is always a big improvement!! LVM reports require root/sudo. This
+will, finally, close issue #135.
+
+3. Going along with -L, and serving as a model for the logic of -L, was the
+complete refactor of -R, RAID, which was a real mess internally, definitely
+one of the messiest and hardest to work with features of inxi before the
+refactor. It's now completely cleaned up and modularized, and is easy to add
+raid types, which was not possible before, now it cleanly supports zfs, mdraid,
+and lvm raid, with in depth reports and added items like mdraid size, raid
+component device sizes and maj:min numbers if the -a option is used. Note
+that LVM RAID requires root/sudo.
+
+4. Added some more sensors dimm, volts items, slight expansion. Note that the
+possible expansion of sensors made possible by the recently upgraded sensors
+output logic, as well as the new inxi internal sensors data structure,
+which is far more granular than the previous version, and allows for much
+more fine grained control and output, though only gpu data currently takes
+advantage of this new power under the covers, although as noted, the /sys based
+hdd temps use the same source, only straight from /sys, since it was actually
+easier using the data directly from sys than trying to map the drive locations to
+specific drives in sensors output. Well, to be accurate, since now only
+board type sensors are used for the temp/fan speed, voltage, etc, reports,
+the removal of entire sensor groups means less chance of wrong results.
+
+5. To bring the ancient RAID logic to fit the rest of inxi style, made
+zfs, mdraid, and lvm raid components use incrementing numbers, like cpu
+cores does. This got rid of the kind of ugly hacks used previously
+which were not the same for zfs or mdraid, but now they are all the same,
+except that the numbers for mdraid are the actual device numbers that
+mdraid supplies, and the LVM and ZFS numbers are just autoincremented,
+starting at 1.
+
+6. Changed message <root/superuser required> to <superuser required> because
+it's shorter and communicates the same thing.
+
+INTERNAL CODE CHANGES:
+
+1. Small, transparent test, tested on Perl 5.032 for Perl 7 compatibility. All
+tests passed, no legacy code issues in inxi as of now.
+
+2. Although most users won't notice, a big chunk of inxi was refactored
+internally, which is why the new -L, the revamped -R, and the fixed
+disk totals finally all can work now. This may hopefully result in more
+consistent output and fewer oddities and randomnesses, since more of the
+methods all use the same tools now under the covers. Ths refactor also
+significantly improved inxi's execution speed, by about 4-5%, but most
+of those gains are not visible due to the added new features, but the
+end result is new inxi runs roughly the same speed as pre 3.2.00 inxi, but
+does more, and does it better, internally at least. If you have a very
+good eye you may also note a few places where this manifests externally
+as well. Last I checked about 10-12% of the lines of inxi had been changed,
+but I think that number is higher now. Everything that could be optimized
+was, everything could be made more efficient was.
+
+3. Several core tools in inxi were expanded to work much more cleanly,
+like reader(), which now supports returning just the index value you want,
+that always happened on the caller end before, which led to extra code.
+get_size likewise was expanded to do a string return, which let me
+remove a lot of internal redundant code in creating the size unit output,
+like 32 MiB. uniq() was also redone to work exclusively by reference.
+
+4. Many bad reference and dereference practices that had slipped into inxi
+from the start are mostly corrected now, array assignments use push now,
+rather than assign to array, then add array to another array, and assign
+those to the master array. Several unnecessary and cpu/ram intensive copying
+steps, that is, were removed in many locations internally in inxi. Also
+now inxi uses more direct anonymous array and hash refernce assignments,
+which again removes redundant array/hash creation, copy, and assignment.
+
+5. Also added explicit -> dereferencing arrows to make the code more clear
+and readable, and to make it easier for perl to know what is happening.
+The lack of consistency actually created confusion, I was not aware of
+what certain code was doing, and didn't realize it was doing the same
+thing as other code because of using different methods and syntaxes for
+referencing array/hash components. I probably missed some, but I got many
+of them, most probably.
+
+6. Instituted a new perl builtin sub routine rule which is: if the sub
+takes 2 or more arguments, always put in parentheses, it makes the
+code much easier to follow because you see the closing ), like:
+push(@rows,@row); Most perl builtins that take only one arg do not
+use parentheses, except length, which just looks weird when used in
+math tests, that is: length($var) > 13 looks better than length $var > 13.
+This resolved inconsistent uses that had grown over time, so now all the
+main builtins follow these rules consistently internally.
+
+Due to certain style elements, and the time required to carefully go through
+all these rules, grep and map do not yet consistently use these rules, that's
+because the tendency has been to use the grep {..test..} @array and
+map {...actions...} @array
+
+7. Mainly to deal with android failures to read standard system files due to
+google locking it down, moved most file queries to use -r, is readable, rather
+than -e, exists, or -f, is file, unless it only needs to know if it exists,
+of course. This fixed many null data errors in android even on locked androids.
+
+8. Added in %mapper and %dmmapper hashes to allow for easy mapping and
+unmapping of mapped block devices. Got rid of other ways of doing that,
+and made it consistent throughout inxi. These are globals that load once.
+
+9. Learned that perl builtin split() has a very strange and in my view originally
+terrible decision that involves treating as regex rules string characters in split
+string, like split('^^',$string), which should logically be a string value, not
+a ^ start search followed by a ^, but that's how it is, so that was carefully checked
+and made consistent as well. Also expanded split to take advantage of the number of
+splits to do, which I had only used occasionally before, but only updated field/value
+splits where I have a good idea of what the data is. This is very useful when the
+data is in the form of field: value, but value can contain : as well. You have to
+be very careful however, since some data we do want in fact the 2nd split, but not
+the subsequent ones, so I only updated the ones I was very sure about.
+
+10. Going along with the cpu microarch fixes, updated and cleaned up all the lists
+of model/stepping matches, now they are all in order and much easier to scan and
+find, that had gotten sloppy over the years.
+
+11. More ARM, moved dummy and codec device values into their own storage arrays,
+that let me remove the filters against those in the other detections. Makes logic
+easier to read and maintain as well.
+
+
+-----------------------------------
+-- Harald Hope - Tue, 15 Dec 2020 15:08:05 -0800
+
+=====================================================================================
Version: 3.1.09
Patch: 00
Date: 2020-11-11