Aptivi - Manual
ProjectsWebsiteBlog
Nitrocid KS - Manual
Nitrocid KS - Manual
  • Welcome!
  • Versions and Compatibility
    • Supported Versions
    • EOL Versions
    • Version Release Notes
      • v0.0.1.x series
      • v0.0.2.x series
      • v0.0.3.x series
      • v0.0.4.x series
      • v0.0.5.x series
        • v0.0.5.0 Beta Versions
      • v0.0.6.x series
        • v0.0.6.0 Beta Versions
      • v0.0.7.x series
        • v0.0.7.0 Beta Versions
      • v0.0.8.x series
      • v0.0.9.x series
      • v0.0.10.x series
      • v0.0.11.x series
      • v0.0.12.x series
      • v0.0.13.x series
      • v0.0.14.x series
      • v0.0.15.x series
      • v0.0.16.x series
      • v0.0.17.x series
      • v0.0.18.x series
      • v0.0.19.x series
      • v0.0.20.x series
      • v0.0.21.x series
      • v0.0.22.x series
      • v0.0.23.x series
      • v0.0.24.x series
      • v0.1.0.x and 0.1.1.x series
      • v0.1.2.x and v0.1.3.x series
    • Compatibility Notes for KS API Revisions
      • Upgrading to API v1.0 series
      • Upgrading to API v1.1 series
      • Upgrading to API v1.2 series
      • Upgrading to API v1.3 series
      • Upgrading to API v2.0 series
      • Upgrading to API v2.1 series
      • Upgrading to API v3.0 series
        • From 0.0.24.x to 0.1.0 Beta 1
        • From 0.1.0 Beta 1 to 0.1.0 Beta 2
        • From 0.1.0 Beta 2 to 0.1.0 Beta 3
        • From 0.1.0 Beta 3 to 0.1.0 RC
        • From 0.1.0 RC to 0.1.0 Final
      • Upgrading to API v3.1 series
  • Installation and Maintenance
    • Installing the Kernel
      • Windows
      • macOS
      • Linux
      • Android
    • Upgrading the Kernel
      • Windows
      • macOS
      • Linux
      • Android
    • Dependency Information
  • Fundamentals
    • What is the Kernel?
    • What is Nitrocid KS?
    • Simulated Kernel Features
      • Extra Features
        • More Networking
          • FTP Client
          • SSH Connection
          • SFTP Client
          • RSS Client
          • HTTP Client
          • Mail Client
        • Games and Amusements
          • Hangman
          • BackRace
          • Meteor
          • Pong
          • Russian Roulette
          • ShipDuet
          • Snaker
          • Solver
          • SpeedPress
          • Wordle
        • More Editors
          • JSON Editor
          • SQL Editor
        • Common Programs
          • Archive
          • Caffeine
          • Calendar
          • Calculator
          • Contacts
          • Dictionary
          • Git Shell
          • Notes
          • Stocks
          • Timers
          • To-do List
          • Unit Converter
          • Weather
        • Docking
        • Language Studio
        • Theme Studio
      • Accounts
        • Groups
        • Permissions
      • Editors
        • Text Editor
        • Hex Editor
      • Shells
        • Commands List
        • Addon Commands List
      • Files and Folders
        • Hashing and Encryption
      • The Nitrocid Homepage
      • Networking
      • Localization
      • Screensavers
      • Lockscreen Widgets
      • Audio Cues
  • Advanced and Power Users
    • Building the Kernel
      • Building on Windows
      • Building on macOS
      • Building on Linux
      • Building on Android
    • Kernel Modifications
      • Building your Mod
      • Analyzing your Mod
        • Text - NKS0001
        • ConsoleBase - NKS0002
        • ConsoleBase - NKS0003
        • ConsoleBase - NKS0004
        • ConsoleBase - NKS0005
        • ConsoleBase - NKS0006
        • ConsoleBase - NKS0007
        • ConsoleBase - NKS0008
        • ConsoleBase - NKS0009
        • Files - NKS0010
        • Files - NKS0011
        • Files - NKS0012
        • Files - NKS0013
        • Files - NKS0014
        • Files - NKS0015
        • Files - NKS0016
        • Files - NKS0017
        • Files - NKS0018
        • Files - NKS0019
        • Files - NKS0020
        • Files - NKS0021
        • Files - NKS0022
        • Files - NKS0023
        • Kernel - NKS0024
        • Kernel - NKS0025
        • Kernel - NKS0026
        • Kernel - NKS0027
        • Kernel - NKS0031
        • Kernel - NKS0032
        • Kernel - NKS0033
        • Kernel - NKS0037
        • Kernel - NKS0038
        • Kernel - NKS0039
        • Kernel - NKS0040
        • Kernel - NKS0041
        • Kernel - NKS0042
        • Kernel - NKS0043
        • Kernel - NKS0052
        • Kernel - NKS0053
        • Languages - NKS0044
        • Languages - NKS0045
        • Languages - NKS0046
        • Network - NKS0051
        • Text - NKS0047
        • Text - NKS0048
        • Text - NKS0049
        • Text - NKS0050
        • Text - NKS0054
        • Text - NKS0055
      • Managing your Mod
        • Inter-Mod Communication
        • Inter-Addon Communication
    • Diagnostics
      • Debugging
        • Local Debugging
        • Remote Debugging
      • Testing
      • Other Diagnostics
    • Bootloader
      • Boot Choices
      • Kernel Environments
      • Custom Boot Styles
    • Inner Workings
      • Kernel Settings
        • Mechanics of Settings App
        • Settings Format
        • Custom Settings
      • Shell Structure
        • Help System
        • Command Parsing
        • Command Information
        • Command Switches
        • Shell History
        • Shell Scripting
        • Shell Presets
        • Extra Shell Features
      • Multilingual Kernel
        • Locale Tools
        • Custom Languages
      • Inner Essentials
        • Kernel Drivers
          • Console Drivers
          • Debug Logger Drivers
          • Encoding Drivers
          • Encryption Drivers
          • Filesystem Drivers
          • Hardware Prober Drivers
          • Input Drivers
          • Network Drivers
          • RNG Drivers
          • Regular Expression Drivers
          • Sorting Drivers
        • Kernel Placeholders
        • The Permissions
        • The Users
        • Kernel Threads
        • Kernel Arguments
        • Kernel Journaling
        • Remote Procedure
        • Nitrocid Filesystem
        • Screensaver Internals
        • Splash Internals
        • Kernel Platform
        • Theme Internals
        • Color Internals
        • Privacy Consents
        • System Notifications
        • MAL and MOTD
        • Progress Handlers
        • Assembly Signing
        • Assembly Reflection
        • Random Number Generation
        • Network Tools
        • Date and Time
        • Mod Manual Pages
      • Miscellaneous APIs
  • Project Dependencies
  • Report an issue
  • Source code
  • API Reference
Powered by GitBook
On this page
  • From 0.0.11 to 0.0.12
  • ProbeHW()
  • PreFetchNetworks and PostFetchNetworks Events
  • String Extensions
  • From 0.0.12 to 0.0.12.3
  • ListenRPC()
  • From 0.0.12.3 to 0.0.14
  • Hardware Classes and Routines
  • DoCalc()
  • From 0.0.14 to 0.0.15
  • PrintLog()
Edit on GitHub
  1. Versions and Compatibility
  2. Compatibility Notes for KS API Revisions

Upgrading to API v1.2 series

Follow the compatibility notes when upgrading your mods to API v1.2 series

Last updated 7 months ago

When upgrading your modification from the target of the later version of Nitrocid KS that declares itself to be from the API v1.2, you must make necessary changes to be able to use your mod in a Nitrocid KS version which you use to test your mod. These changes will be listed starting from 0.0.12 to the last version in this API revision.

From 0.0.11 to 0.0.12

This version added some of the interesting features, including the built-in kernel configuration tool that still witnessed improvements to this day.

ProbeHW()

HardwareProbe.vb
Public Sub ProbeHW()

This function used to be a wrapper for hardware probing function which checked to see if the quiet mode was enabled on the kernel. However, it got removed.

We advice you to cease using this function, since hardware already gets probed at boot time.

PreFetchNetworks and PostFetchNetworks Events

EventsAndExceptions.vb
'Events
Public Event PreFetchNetworks()
Public Event PostFetchNetworks()

'Responders
Public Sub RespondPreFetchNetworks() Handles Me.PreFetchNetworks
Public Sub RespondPostFetchNetworks() Handles Me.PostFetchNetworks

'Raisers
Public Sub RaisePreFetchNetworks()
Public Sub RaisePostFetchNetworks()

Each time the fetching network request is made, the above events get raised to notify the mods that fetching networks has commenced and ended. Since it was linked to the SAMBA-powered network fetcher that lsnet and lsnettree commands from 0.0.2 use, we decided to remove after being unused.

The new lsnet command currently doesn't provide these events, so we advice you to cease using these events until they're implemented again.

String Extensions

StringExtensions.vb
Public Function ReplaceLastOccurrence(ByVal source As String, ByVal searchText As String, ByVal replace As String) As String
Public Iterator Function AllIndexesOf(ByVal str As String, ByVal value As String) As IEnumerable(Of Integer)
Public Function Truncate(ByVal str As String, ByVal threshold As Integer) As String

The three above string extensions were used across different parts of the kernel. We'll briefly summarize these functions one by one.

  • ReplaceLastOccurrence() tries to replace only the last occurrence of the substring inside the target string with the text to be replaced.

  • AllIndexesOf() gets all the indexes of the specified value from the string

  • Truncate() tries to truncate the string after the specified threshold.

They were removed because Extensification was being made at that time, and they were included there. Furthermore, we've deprecated this library.

To continue using these functions, we suggest that you re-implement these functions yourself.

From 0.0.12 to 0.0.12.3

This version brought minor improvements. However, there was an API removal.

ListenRPC()

RemoteProcedure.vb
Sub ListenRPC()

This function was called by the RPC thread which started during the call to the StartRPC() function. ListenRPC() tries to set the RPC listener up and start another thread responsible for receiving all available RPC commands from all connected devices. However, it got removed as it was merged to StartRPC().

StartRPC() and StopRPC() are still available as viable ways of starting and stopping the remote procedure server. The below code block shows you the method signature of the two functions.

RemoteProcedure.cs
public static void StartRPC()
public static void StopRPC()

From 0.0.12.3 to 0.0.14

This version added some more features, like the usage of Inxi.NET for the first time in the kernel and the BouncingBlock screensaver.

Hardware Classes and Routines

HardwareVars.vb
'Hardware classes and their variables
Public Class HDD
Public Class HDD_Linux
Public Class Part
Public Class Part_Linux
Public Class Logical
Public Class CPU
Public Class CPU_Linux
Public Class RAM
Public Class RAM_Linux

These above classes were used to deserialize all the hardware variables to their variables so their information can be accessed directly by mods.

HardwareProbe.vb
'Probers
Public Sub ProbeHardware()
Public Sub ProbeHardwareLinux()

'Listing
Sub ListDrivers_Linux()
Sub PrintDrives()
Sub PrintPartitions(ByVal Drive As Integer)

These are the probers and the listers used by the kernel to facilitate getting information about the hardware from your computer.

'CPU feature classes
Public Class CPUFeatures_Win
Public Module CPUFeatures_Linux

'CPU feature query
Public Function CheckSSE(ByVal SSEVer As Integer) As Boolean

Finally, the above routines were used to check your processor for support of the Streaming SIMD Extensions (SSE) feature set.

As Inxi.NET got released at the end of 2020, it was used by Nitrocid KS to separate these above routines to the library so the hardware querying functions were no longer dependent on Nitrocid KS.

As a result, we removed all the above classes and routines.

To continue using these functions and routines, use the Inxi.NET library. If you just want to list the hardware, use the ListHardware() routine.

HardwareList.cs
public static void ListHardware(string HardwareType)

DoCalc()

Calc.vb
Public Function DoCalc(ByVal Expression As String) As Dictionary(Of Double, Boolean)

The calculator was re-implemented with the usage of the DataTable class to aid in solving the expression. This time, it only takes the expression and calculates it using the Compute() method from the abovementioned class. The expression had to follow the format of the DataTable expression that were described in the below link.

It got removed again in favor of the string evaluator that was implemented in the StringEvaluators module, which was removed as of 0.1.0.

The calculator no longer uses the string evaluator, and now uses the StringMath library to calculate the expressions.

From 0.0.14 to 0.0.15

This version was released as the last major version in the API v1.2 series.

PrintLog()

DebugLogPrint.vb
Sub PrintLog()

This function was used as a wrapper to the ReadContents() routine found in the Filesystem module. It got removed for being nothing but the wrapper for said method.

To simulate this function, use the ReadContents() function and the console writer to print the debug logs. Both of the methods have their own method signatures written below in the code block.

DebugLog.cs
// Use DebuggingPaths from Paths.cs
public static string DebuggingPath

// and pass it to the filename argument of the below method from
// FileRead.cs
public static string[] ReadContents(string filename)

// Then, use the below method to write the lines to the console.
// Easiest way is to use the list writer. Full method list is found
// from ListWriterColor.cs
public static void WriteList<T>(IEnumerable<T> List)
v0.0.12.x series
v0.0.14.x series
v0.0.15.x series
LogoDataTable.Compute(String, String) Method (System.Data)docsmsft