Skip to content
Wei-Cheng Yeh (IID) edited this page Apr 7, 2023 · 12 revisions

DreamBBS v3 發佈說明 Release Note

本文說明 DreamBBS v3 的主要變更。
This article explains the major changes made in DreamBBS v3.

🚧 建設中! Work in Progress! 🚧

本文仍在修訂中,且仍有已知疏漏之處:
This article is still being revised and there are known missing information:

  • 拉取請求的變更資訊 Summary of changes of pull requests: #67 (v3.0.0-alpha.1)

由於 DreamBBS v3 仍在維護中,本文資訊不必然及時,而會適時更新。
Since DreamBBS v3 is still in maintenance, the information of this article does not necessarily up-to-date and will be updated over time.

版本名稱 Version Name

DreamBBS v3 (或稱 v3/3D.21) 是續 DreamBBS v2 系列 (或稱 3.12) 的下一個主要發佈版本系列。
DreamBBS v3 (also v3/3D.21) is the next major release series after DreamBBS v2 (also 3.12).

  • (v2.1-gilgamesh-rc1 📆 2019-12-17)
  • v3.0: DreamBBS-202X v0-Azure
    • v3.0.0-alpha.1 📆 2020-03-10
    • v3.0.0 📆 2021-04-02
    • v3.0.1 📆 2021-04-25
  • v3.1: DreamBBS 3D-AO.21.1-VRMiliO
    • v3.1.0-rc.1 📆 2022-01-01

改變說明 Changes

有關從 v2.0 到此版本的改變細節,請見此發佈版本的計畫專案中的各個 pull request 的說明:
For details of changes from v2.0 until now, please refer to the description of pull requests of the project for this release:
https://github.com/ccns/dreambbs/projects/4

有關快速鍵的改變,請見:
For hotkey changes, please refer to:
https://github.com/ccns/dreambbs/wiki/VS-MapleBBS-3-Keyboard-zh_tw

以下說明從 v2.0 的重大改變。
The major changes from v2.0 are explained below.

使用者介面改變 UI Changes

v2.1-rc1

  • 使用者閒置時間精度現為秒,其顯示範圍現涵蓋 32 位元整數。
    The users' idle time now has the resolution of one second as well as the display range of 32-bit integer.

  • 現已預設啟用聊天室;macro HAVE_CHATROOM_CLIENT 已廢止。
    The chatroom is now enabled by default; the macro HAVE_CHATROOM_CLIENT is no longer effective.

  • 現在聊天室的聊天訊息一律採用向新訊息捲動的顯示方式;macro M3_CHAT_SCROLL_MODE 已廢止。
    Now the chat messages in the chatroom are always displayed as being scrolled toward the latest message; the macro M3_CHAT_SCROLL_MODE is no longer effective.

  • 現在進入聊天室時,聊天暱稱欄會預先填入使用者 ID,而送出空暱稱可取消進入聊天室。
    Now, when the user enters the chatroom, the input field for the user's nickname in chatroom will be pre-filled with the user's ID, and sending an empty nickname cancels the entry.
  • 現在被 zapped 掉的看板及其文章會被顯示為已讀。
    Zapped boards and all posts in them are now displayed as read.

  • 改進了編輯器在 ANSI 預覽模式中,對編輯按鍵的處理
    Improve the handling of editing keys in ANSI preview mode in the editor

    已可在編輯器中的 ANSI 預覽模式中直接使用倒退鍵。
    Backspace can now be used directly in the ANSI mode in the editor.

    • (v3.0.0) 其它編輯按鍵也已改進。
      (v3.0.0) Improvements have been made for other editing keys as well.
  • 改進文章標題色彩突顯系統 (hdr_outs())
    Improve the color-highlighting system for article titles (hdr_outs())

    包含:[]/<>/{} 括號配對、符合目前文章標題的文章突顯、(v3.0.0) 增加突顯種類、等等。
    Including: Parenthesis pairing for []/<>/{}, highlighting of articles with the matching title of the current article, (v3.0.0) new highlight types, etc.

    • (v3.0.0-alpha.1) 現在文章標題色彩突顯會正確處理雙位元組字元。
      (v3.0.0-alpha.1) Now the color-highlighting of article titles correctly handles DBCS characters.

    • (v3.0.0) 同時使相關程式碼更簡潔並易讀
      (v3.0.0) Also improve the conciseness and readability of relevant codes

v3.0.0-alpha.1

  • 現在當看板分類文字色彩設定為黑色時,會顯示為亮黑色以避免看不見。
    Now, when the color of the board category text is set as black, it is displayed as bright black to prevent it from being invisible.

  • 加大了使用者名單中的「故鄉」(使用者的網際網路地址訊息)欄位的最大寬度。請使用寬螢幕看看。
    The maximum width of the "homeland" (users' internet address information) field in the online user list has been increased. Please check it out with a wide screen.

  • 增加自動生成的程式版本與編譯環境資訊
    Add automatic generated program version and compilation environment information

    可從 BBS 介面主選單選擇以下選項以查看:
    To view it, please choose the following menu item from the main menu:

    • (X)yz (系統資訊區 System Information Area)
      -> (X)info (系統程式資訊 System Environment and Program Information)
    • (v3.1.0-rc.1) 現可查看 bbsd 是否有更新版本(需啟用 DSO 函式庫的熱插拔)
      (v3.1.0-rc.1) It is now possible to check whether bbsd has a newer version (requires enabling hot swapping of DSO libraries).
  • 現在使用者上站紀錄的 IP 地址會被印成標準格式,並且連線類型在由 WebSocket 連入時會顯示為 WSP (WebSocket Proxy)。
    Now, in the user's login history, the IP is printed in the standard format, and the connection type is displayed as WSP (WebSocket Proxy) if the user connects via WebSocket.

    • (v3.1.0-rc.1) 且 Secure Shell 連入時會顯示為 SSH,以 WebSocket Secure 連入時則為 WSS
      (v3.1.0-rc.1) And displayed as SSH if the user connects via Secure Shell; WSS if the user connects via WebSocket Secure.
  • 改進多重選項設定介面(bitset()),並防止使用者更改系統保留的設定
    Refine the UI of multiple selection setting (bitset()) and prevent the user from changing options reserved by the system

  • 使用者/版主的資料查詢與設定介面(acct_setup()/bm_setup()),現在在送出查詢理由前會維持隱藏隱私資料,並且在查詢完畢後會清除畫面。
    The UI for querying and setting user/board moderator (acct_setup()/bm_setup()) now hides the private information before the reason for querying is given and clears the screen when the query is done.

  • 選擇使用者/系統檔案以編輯的介面(x_file())改為使用主選單函式 (domenu(),原 menu()) 實作。
    The UI for choosing user/system files (x_file()) for editing is reimplemented with the main menu function (domenu(), formerly menu()).

  • 實作 pfterm 的黑白模式
    Implement the Black-and-White mode for pfterm

    可從 BBS 介面主選單選擇以下選項以使用功能:
    To access this function, please choose the following menu item from the main menu:

    • (D)Service (服務區 Service Area)
      -> (U)ser (個人工具區 User Utilities)
      -> (C)onfigure (註冊及設定個人資訊 Register and User Information Setting)
      -> (F)avorite (個人喜好設定 User Preference)
      -> 0 □ (彩色模式 Color Mode)

    並使該選項的圖案變為空心 And make the icon for the option unfilled:

  • 現在 pfterm 支援更多彩現屬性。
    pfterm now supports more render attributes.

    v2.0 引進的 Virtual Attribute 已更名為 Cursor Attribute。
    The Virtual Attribute introduced in v2.0 has been renamed to Cursor Attribute.

    有關完整的新增支援的彩現屬性清單,請見:
    For the complete list of newly supported render attributes, please refer to:
    https://github.com/ccns/dreambbs/pull/61

  • 引進 PttBBS 式的光棒選單系統
    Introduce the PttBBS-style lightbar menu system

    可從 BBS 介面主選單選擇以下選項以啟用:
    To enable it, please choose the following menu item from the main menu:

    • (D)Service (服務區 Service Area)
      -> (U)ser (個人工具區 User Utilities)
      -> (C)onfigure (註冊及設定個人資訊 Register and User Information Setting)
      -> (F)avorite (個人喜好設定 User Preference)
      -> K ■ (使用光棒選單系統 Enable Lightbar Menu System)

    並使該選項的圖案填滿 And make the icon for the option filled:

    如果 pfterm 未啟用,則本功能無效。
    This feature is disabled when pfterm is not enabled.

  • 現在標題列的中央標題會儘可能向整個標題列的中央置中。
    Now the middle title on the title bar is placed on the entire title bar as close to the center as possible.

  • 轉信設定介面改用 xover() 實作,可使用 Xover 列表的預設快速鍵。
    The UI of internet article sending/receiving setting is reimplemented using xover(), so the default hotkeys of Xover list can be used.

  • 重新實作 Xover 列表的 footer 顯示,改善 Xover 快速訊息的顯示
    Reimplement the footer display in Xover list and refine the display of Xover quick messages

    現在執行會改變 footer 所在橫行的顯示的操作後,會正確地重繪 footer 了。
    Now the footer is redrawn correctly after operations which alter the display of the row for the footer.

    現在 Xover 快速訊息出現時,按任意按鍵會清除此訊息並重繪回 footer。
    Now, when the Xover quick messages appear, pressing any key causes the message to be cleared and the footer to be redrawn.

    已重新啟用 Xover 列表最後一頁為滿時的所顯示的訊息(3.1.0-rc.1:訊息已改為與原版 MapleBBS 3.10 相同)。
    The message which appears when the last page of Xover list is full has been reenabled (3.1.0-rc.1: the message has been changed to be same as the original MapleBBS 3.10).

    • (3.1.0-rc.1) 新增在 Xover 列表中使用主題式瀏覽按鍵,而游標已在目標上時的訊息
      (3.1.0-rc.1) Add a new message for indicating that the cursor is already on the target when using thread browsing hotkeys in Xover list
  • 改善 vget() 輸入框系統的歷史紀錄處理
    Refine the history entry handling of the vget() input field system

    不能再向後跳到空白紀錄或向前跳到最舊紀錄了。
    It is no longer possible to jump backward to empty entries or jump forward to the oldest entry.

    已編輯的新輸入與歷史在前後切換歷史時會被儲存,而送出為輸入的歷史會變成最新的歷史。
    Edited new input and history entries are saved when switching between the history entry, and the history entry which sent as the input becomes the newest entry.

v3.0.0

  • 現在鎖文時,如果沒有板主權限而不能自行解鎖,會先顯示警告訊息要使用者確認。
    Now a warning prompt displays when users try to lock their post but do not have the moderator permission to unlock the post.

  • 現在許多介面支援在畫面大小改變時進行畫面自動重繪,如 Xover 列表、彈出式選單、vget() 輸入框。
    Now many UIs support automatic redraws when the screen size is changed, e.g., Xover lists, the popup menu, and the vget() input fields.

    亦可按 Esc-Ctrl-L 手動重繪。
    Esc-Ctrl-L can be used for manual redraws if needed.

  • 現在在編輯器中,允許在一行內輸入最多 3986 個位元組長(含 ANSI 控制碼)的文字。
    Now, texts up to 3986 bytes long (including ANSI escapes) are allowed to be input on a single line in the editor.

    顯示系統及編輯器的單行緩衝區大小(ANSILINESIZE,原 ANSILINELEN)已加大至 4000 個位元組。
    The buffer size for a single line in the display system and the editor (ANSILINESIZE, formerly ANSILINELEN) has been increased to 4000 bytes.

  • 已實作伺服器端雙位元組字元偵測。
    Server-side DBCS character detection is now implemented.

    同時,BBS 使用者端所送出的雙位元組字元按鍵自動重複會被偵測出並忽略。
    Also, the auto repeats for DBCS character are detected and ignored.

    在編輯器中,Esc-r 可暫時開關雙位元組字元偵測。
    In the editor, Esc-r can temporarily toggle DBCS character detection.

v3.0.1

  • 上站人數統計圖表已改進,解析度由 16 增加至 128。
    The login count chart has been improved. The resolution has been increased from 16 to 128.

v3.1.0-rc.1

  • 已預設使用新式密碼加密產生新密碼。
    The generation of new passwords now defaults to use the new encryption.

iid/develop

  • 已改進編輯器中檔案結尾區域的顯示。
    The display of the end-of-file section in the editor has been improved.

  • 已補上系統檔案編輯選單所遺漏的項目並改進說明。
    System file editing menu: The missing entries has been added; the descriptions have been improved.

  • 已為 pmore 增加 C(存入暫存檔)之功能。此為 MapleBBS 3 原生 more 所包含之功能。 The C hotkey (copy into temporary buffer file) has been added to pmore. This functionality has already been included in the native version of MapleBBS 3 more.

  • 已為連線操作 connect() 引入站內服務 1 秒、站外服務 5 秒的逾時,避免使用者久等。
    A timeout of 1 second for in-site services and 5 seconds for inter-site services has been introduced to the connection operation connect() to prevent users from keeping waiting.

…… 以及其它系統訊息的錯字與語法修正 (詳見 commit 紀錄)
…… and other typo/grammar fixes for system messages (see commit log for details)

錯誤修正 Bug Fixes

v2.1-rc1

  • 修正使用者的文章閱讀紀錄(BRHs)會因為 memcpy() 在較新的作業系統上的未定義行為而損壞的問題
    Fix users' article-reading record (BRHs) corrupted due to the undefined behavior of memcpy() on recent OSs

    • (v3.0.0) 修正其它執行資料會因為 memcpy() 在較新的作業系統上的未定義行為而損壞的問題
      (v3.0.0) Fix other runtime data corrupted due to the undefined behavior of memcpy() on recent OSs
  • 修正 visio screen 的畫面備份機制在寬/高螢幕下以及螢幕大小變更時,不能正確運作的問題
    Fix the screen backup mechanism of visio screen was broken for wide/tall screens and resizing screen

  • 修正 Xover 列表項目在某些操作後的顯示樣式不正確的問題
    Fix incorrect appearance of Xover list items after certain operations

    現在單一項目的顯示有所更動時,會一律重新繪製此項目。
    Now the redrawing of the entire item is always performed when the display of the item alters.

  • 修正編輯器的游標在空行或只有空白的行的前一行行尾時,按下 Del 無效的問題
    Fix Del not worked at the end of a line above an empty or space-only line

  • 修正編輯器的游標位於非檔案第一行的畫面第一行的行首時,按下倒退鍵會導致程式崩潰的問題
    Fix crash when pressing backspace at the beginning of the topmost line which is not the beginning of a file in the editor

v3.0.0-alpha.1

  • 修正在高螢幕下,閱讀文章時進入並退出使用者列表,可能會產生暫時甚至永久的無效文章項目的問題
    Fix possible generation of temporary or even persistent corrupted article entries when the user enters and exits the online user list while using a tall screen

  • 修正將線上使用者自動停權所使用的函式(remove_perm())只會將使用者的對系統內的前 1750(MAXBOARD/4)個看板的寫入權限移除的問題
    Fix the function for automatically suspending online users (remove_perm()) only removed their write permission of the first 1750 (MAXBOARD/4) boards in the system

  • 修正信件列表中的 tag 記號在畫面重繪後會消失的問題
    Fix the tag marks in the mail list disappeared after redraws

  • 修正群組名單搜尋(list_search())的目標不在第一頁時會跳到錯誤項的問題
    Fix the issue that the searching function for the contact group list (list_search()) jumped to the wrong item when the target is not in the first page

  • 修正了 BBS-Lua 與 BBS-Ruby 的問題。
    Fix issues about BBS-Lua and BBS-Ruby

    詳細的問題修正可見:
    For details of fixed issues, please refer to:
    https://github.com/ccns/dreambbs/pull/61

    (v3.1.0-rc.1)

    BBS-Ruby 現已相容於 mruby 3.0.0
    BBS-Ruby is now compatible with mruby 3.0.0

    BBS-Ruby v0.3-DL-2 後又引入了部份修正
    Some fixes are also introduced after BBS-Ruby v0.3-DL-2

  • 改善寵物雞遊戲的程式碼與修正諸多邏輯錯誤
    Refine the code of the digital pet game and fix many logical errors

    詳情請見:
    For details, please refer to:
    https://github.com/ccns/dreambbs/pull/61

    • (v3.1.0-rc.1) 修正復活時數值清零的錯誤。此行為非原作意圖。
      (v3.1.0-rc.1) Fix resurrection zeroing out ability values. This behavior was not intended from the original version.
  • 修正 utmp-dump 先前以 getopt() 重寫的命令列參數處理,會將給定的任意參數皆誤判為不合法的問題
    Fix the rewritten command-line option parsing of utmp-dump mistook any given options as invalid

v3.0.0

  • 修正文章轉綠時間變為上次推文時間的問題
    Fix the date of article reposting became the date of the last comment

  • 修正張爸關鍵字的偵測會產生未定義結果,造成關鍵字被隨機允許的問題
    Fix the Zhangba pattern matching produced undefined result and wrongly, randomly allowing some patterns

  • 修正 rxvt 式的 Ctrl-方向鍵被誤認為 Shift-方向鍵的問題
    Fix rxvt-style Ctrl-arrow keys were misinterpreted as Shift-arrow keys

  • 修正從 Ctrl-Z 選單離開會跳出目前看板的進板畫面的問題
    Fix exiting from the Ctrl-Z menu triggered the welcome screen of the current board

  • 修正踢除先前的重複連線時,踢人的 pid 被誤當成被踢的 pid 記錄
    Fix the kicker session's pid wrongly logged as the kicked session's pid when the previous session is kicked due to multi-session

  • 修正 mailpost 會將文章加到文章列表中的置底文章下方的問題
    Fix mailpost inserted articles after bottomed posts in the article list

v3.1.0-rc.1

  • 修正使用 ulist_fromchange() 編輯使用者來源會造成緩衝區溢出的問題
    Fix buffer overflow when editing user's location info using ulist_fromchange()

  • 修正具誤導性的夢幣交易紀錄
    Fix misleading logs for exchanging the Dream tokens

  • 修正 pmore 載入第一行達到 2GiB (231 位元組) 或更長的任一文章時會崩潰的問題
    Fix the issue that pmore crashed when loading any article with the first line reached 2GiB (231 Bytes) or longer

  • 修正此前引入的 MapleBBS 3.10-itoc 式 more 在檔案大小達到 40.96MiB (232 / 100 位元組) 或更大時,閱讀進度的百分比顯示錯誤的問題
    Fix the issue that, in the MapleBBS 3.10-itoc style more, a wrong reading progress percentage would be shown when the file reached 40.96MiB (232 / 100 bytes) or larger

  • 修正內部處理 64-bit 資料時的裁切問題
    Fix truncation issues of internal handling of 64-bit data

master

  • 修正可造成強制閱讀公告板之判斷錯誤的看板與最新文章的最後更新時間的潛在不同步
    Fix the potential desync of the latest update time between the board and the latest article which could cause wrong judgment for enforcing the reading of the announcement board

iid/develop

  • 修正在編輯器中,當多行檔案的最後一行行首位於畫面最左上方時,將游標置於此並按下 Backspace 會崩潰的問題。
    Fix crashes when Backspace is pressed when the beginning of the last line of a multi-line file is on the most top-left position on the screen and the cursor is placed at such position in the editor.

  • 修正啟用 pfterm 時,使用超過高度上限 (T_LINES; 50) 的畫面時,畫面捲動不正確的問題。(未啟用時的問題暫未修正)
    Fix screen scrolling broken when use a screen exceeding the height limit (T_LINES; 50) when pfterm is enabled. (Not solved yet for the case when pfterm is disabled)

  • 修正退文以及拒絕個人板申請的程式碼不正確使用 hdr_stamp() 造成開檔後未關閉的問題。
    Fix unclosed files caused by incorrect use of hdr_stamp() in codes for rejecting articles and rejecting applications for creating personal boards.

  • 修正進入閒置畫面但未鎖定時誤切換了畫面鎖定狀態,而能導致無法回應熱訊的問題。
    Fix screen locking state wrongly toggled when entering the idle screen without locking, which could have made the user unable to reply to messages.

…… 以及許多其它較難遇到的 undefined behavior 問題 (詳見 commit 紀錄)
…… and a lot of rather rare undefined behavior issues (see commit log for details)

專案部屬工具改變 Project Deployment Tool Changes

v2.1-rc1

  • Make 腳本新增了設定自動推導機制,可推測 Unix 使用者 UID、GID、家目錄等等的設定。
    Add configuration deduction mechanism to the Make script which can deducing configurations such as Unix user's UID, GID, and home directory

  • 現在會自動設定安裝的檔案的擁有者與權限。
    The owner and permission for install files are now configurated automatically.

  • 已可用 CMake 建置 DreamBBS。
    DreamBBS can now be built with CMake.

    BSD Makefile 檔案已被棄用,將在 v3.1 時被移除。請改用 CMake 建置本專案。
    BSD Makefiles are now deprecated and will be removed in v3.1. Please build this project with CMake instead.

  • wsproxy 模組不再需要 vstruct 函式庫。
    The wsproxy module no longer requires the library vstruct.

    此修改已移植回 PttBBS:
    This change has been backported to PttBBS:
    https://github.com/ptt/pttbbs/pull/87

v3.0.1

  • 移除專案中 Travis CI 的設定檔
    Remove the configure file for Travis CI from the project

    • (v3.1.0-rc.1) 已改用 GitHub Actions 來產生專案建置是否順利的資訊。
      (v3.1.0-rc.1) The build status is now generated with GitHub Actions instead.

v3.1.0-rc.1

  • DreamBBS GitHub WIKI 頁面現已向 wiki 分支自動同步。
    Now the DreamBBS GitHub WIKI page has been auto syncing to the wiki branch.

  • 新增用於 bbs-sshd 的 systemd unit 檔
    Add systemd unit file for bbs-sshd

iid/develop

  • 已修正遠端分支名稱含有 / 時會取得缺少 / 前文字的問題。
    The issue of missing string before the /s for remote branch names containing /s has been fixed.

程式架構改變 Program Architecture Changes

v2.1-rc1

  • 移除未使用的 WindTop BBS 式我的最愛系統 (Favorite)
    Remove unused WindTop-BBS–style favorite system (Favorite)

    目前使用的是類似 MapleBBS-itoc 的我的最愛系統。
    The system currently in use is MapleBBS-itoc–like favorite system.

  • 可透過定義 macro NO_SO1 以不使用動態載入函式庫
    It is possible to disable dynamic loaded libraries by defining the macro NO_SO to 1

  • 強化型別安全
    Enhance type safety

    包含:以 union 取代須手動轉型的結構成員(如 KeyFuncMENU、等),嚴格引入標頭檔,等等。
    Including: Replace manually type-casted structure members with union (for KeyFunc, MENU, etc.), enforce header inclusions, etc.

  • 支援使用帶有 GCC 擴充語法的 C++ 模式編譯
    Support compilation with C++ mode with GCC extensions

v3.0.0-alpha.1

  • 現已完全支援 IPv6。
    IPv6 is now fully supported.

    由於資料結構 UTMP 已更改,請務必使用系統殼層命令 ipcrm 重開 SHM(共用記憶體)。
    Please reload the SHM (shared memory) using system shell command ipcrm, since the data structure UTMP has been modified.

    相關程式已全面改用 getaddrinfo()
    Relevant codes now use getaddrinfo() instead.

    lib/dns.c 亦已實作 IPv6 地址之 AAAA 紀錄的 DNS 反查;惟在 iid/develop 修正了其程式邏輯錯誤後方能使用。
    DNS lookup for AAAA records of IPv6 addresses is implemented in lib/dns.c as well. However, it has become usable only after its program logic errors were fixed in iid/develop.

    • (v3.0.0) 修正伺服器可提供 IPv6 連線時可能僅提供 IPv4 連線的問題 (v3.0.0) Fix the issue that only IPv4 connections may have been provided by the server even when there were available IPv6 connections
  • vkey() 按鍵輸入系統已加入延時判斷機制。
    The delayed key determination mechanism is implemented in the vkey() key input system.

    現在一律定義 TRAP_ESC 以正確處理被 Esc 中斷的不確定是否完整的按鍵序列碼。
    TRAP_ESC is now always defined to correctly handle key sequences which may not be complete.

  • vkey() 內部處理 IAC 命令的函式現會進行邊界檢查 The function for handling IAC commands which was used internally in vkey() now performs bound checking.

    • (v3.0.0) 過去內部使用的 iac_count() 被棄用,已改用新的有邊界檢查的 iac_process()
      (v3.0.0) The iac_count() which was used internally in vkey() has been deprecated in favor of the new bound-checking iac_process().
  • 引進畫面大小參考座標系統
    Introduce the Screen-Size–Referencing Coordination System

    此座標系中的固定座標值能隨畫面大小對應不同的實際座標。
    In this coordination system, a fixed coordination value can map to different actual coordination values depends on the screen size.

    範例 Examples:

    • 畫面底部橫行 The bottom line of the screen: (T_LINES_REF-1, 0) == (B_LINES_REF, 0)
    • 畫面中央 The screen center: (T_LINES_REF/2, T_COLS_REF/2)

    其中 T_LINES_REF(對應畫面高度)與 T_COLS_REF(對應畫面寬度)皆為常數。
    Where T_LINES_REF (which maps to the screen height) and T_COLS_REF (which maps to the screen width) are both constants.

    對此座標系統的更深入介紹,請見:
    For a deeper introduction of the coordination system, please refer to:
    https://github.com/ccns/dreambbs/wiki/Screen-Coordinate-System-zh_tw

    目前 DreamBBS 使用此座標系統處理主選單、彈出式選單、以及 vget() 輸入框在畫面大小變更後的重繪(v3.0.0:畫面大小變更後立即重繪)。
    The coordination is currently used in DreamBBS for handling the redrawing of the main menu, the popup menu, and the vget() input field after screen resizing (v3.0.0: redraw immediately on resizing).

  • 改進並擴充 Xover 列表系統
    Improve and extend the Xover list system

    Xover 列表系統所使用的特殊值定義已變更,請重新編譯。
    The special values used in Xover list system are reassigned, please recompile.

    重新設計的 Xover 特殊值分配方式避免了游標移動的負值問題,並可用回傳值同時指定重繪與按鍵操作。
    The redesigned Xover special value scheme avoids the negative value issue of cursor movement and allows specifying the redraws and key operations at the same time.

    改進後的 Xover 列表系統使用 mmap() 一次載入整個列表的資料。
    The improved Xover list system uses mmap() to load the data of the entire list at once.

    引進新的特殊值,包含而不限於:
    New special values are introduced, including but not limited to:

    • XO_REL + diff: 相對移動 Relative move
    • (v3.0.0:)
    • XO_SCRL + move: 行捲動 Scroll by rows
    • XO_CUR + diff: 重繪單項並相對移動 Redraw a single item and relative move
    • XO_POSF + key: 表示按鍵對應的回呼函式有位置參數 Specify that the callback function for the key has a position parameter
    • (v3.1.0-rc.1:)
    • XO_RS + (RS_*): 主題式閱讀功能 Thread reading functionality

    有關 Xover 列表系統變更前後的詳細說明,請見:
    For details for Xover list system before and after the change, please refer to:
    https://github.com/ccns/dreambbs/wiki/Xover-List-System-zh_tw

    有關詳細變更的介紹,請見:
    For the introduction of the changes in detail, please refer to:
    https://github.com/ccns/dreambbs/pull/61

  • 改進並擴充主選單系統,使其它外觀相似的選單能共用其函式
    Improve and extend the main menu system to make the functions able to be reused for other menu with similar appearance

    有關主選單的詳細行為變更,請見:
    For details for behavior changes of the main menu, please refer to:
    https://github.com/ccns/dreambbs/pull/61

    (v3.0.0)

    主選單系統與 WindTop BBS 的彈出式選單系統所使用的特殊值定義已變更,請重新編譯。
    The special values used in the main menu system and WindTop BBS popup menu system are reassigned, please recompile.

    將主選單系統與 WindTop BBS 的彈出式選單系統所使用的特殊值整合為一
    Merge the special values used for the main menu system and the WindTop BBS popup menu system

    選單系統的內部程式不再使用 WindTop BBS 彈出式選單的 POPUP_* 巨集。
    The POPUP_* macros for WindTop BBS popup menu are no longer used in the internal code of the menu systems.

    改寫主選單以符合 Xover 架構,並將一部份命令改成與 Xover 命令相同
    Rewrite the main menu to be compatible with Xover architecture. Some commands for main menu were changed to be consistent with Xover commands.

    有關主選單系統的特殊值變更前後的詳細說明,請見:
    For details for the special values used in main menu before and after the change, please refer to:
    https://github.com/ccns/dreambbs/wiki/Menu-Systems-zh_tw

  • 改進轉信程式 (innbbsd) 的時間格式解析邏輯 (parse_date()),使之能處理 RFC-1123 所允許的除文字時區與任意括號外的其它時間格式
    Improve the date parsing logic (parse_date()) of the internet article sending/receiving program (innbbsd) to make it handles other date formats permitted by RFC-1123 other than the time zone texts and arbitrary parentheses

  • 現在用 GNU C 或 ISO C++11 編譯時,可以檢查從 DSO(動態載入物件)函式庫載入的物件的型別是否正確。
    Now the type correctness of objects from DSO (dynamic shared object) libraries can be checked when compiling with GNU C or ISO C++11.

  • 支援 DSO 函式庫的熱插拔
    Support hot swapping of DSO libraries

    本功能允許在函式宣告未變更的前提下,直接取代安裝的函式庫檔案,不必重新啟動 bbsd 就能使編譯為 DSO 函式庫的程式中的變更生效。
    This feature allows changes in programs compiled as DSO libraries to become effective by directly replacing the installed library file without relaunching bbsd.

    dreambbs.conf 中定義 DL_HOTSWAP 以啟用此功能。
    Define DL_HOTSWAP in dreambbs.conf to enable this feature.

    如果設定了 Makefile 變數 NO_SO 以將 so/ 下的程式編譯為靜態連結函式庫,則此功能無效。
    This feature is disabled if Makefile variable NO_SO is set to build programs under so/ as static-linking libraries.

    本功能會使 DSO 函式庫中的全域變數在每次進入函式庫的主函式時重置,請注意使用。
    This feature makes global variables in DSO libraries reset every time the main library function is entered, please use it with caution.

  • util/account.c 中的看板分類區建立工作移至 util/acpro.c(WindTop BBS 用於建立專業討論區的程式)中
    Move the task of building board category area from util/account.c to util/acpro.c (The program for building professional board area in WindTop BBS)

    執行 bbsd 前不再需要執行 account。請將執行 bbsd 用的腳本中的 account 執行命令移除。
    account is no longer needed to run before bbsd is launched. Please remove the command for running account in scripts for launching bbsd

    移除看板分類區在一天的特定時段中不能重建的限制
    Lift the limitation that the board category area should not be rebuilt in the certain time period of a day

v3.0.0

  • 新增不須使用系統殼層介面的系統程式呼叫函式取代部分 system() 函式呼叫,改善安全性
    Add new system-program–calling functions which do not depend on the system shell to replace system() function calls to improve security

  • 支援在 64 位元環境下原生編譯而不影響資料結構的記憶體佈局
    Support native compilation under 64-bit environment without disrupting the memory layout of data structures

    由於資料結構 UCACHE 中的一些資料欄位定義已更改,請務必使用系統殼層命令 ipcrm 重開 SHM(共用記憶體)。
    Please reload the SHM (shared memory) using system shell command ipcrm, since some data fields in the data structure UCACHE has been redefined.

    使用固定寬度的整數型別作為硬碟上與 SHM(共用記憶體)中儲存的資料結構的成員
    Use fixed-width integer types for structure members for data structures stored on hard disk or in SHM (shared memory)

    在 64 位元環境中,內部會使用 64 位元寬的 time_t 處理時間,而固定寬度的時間型別僅會在上述情況使用。
    64-bit time_t is used for internal time processing in 64-bit environment, while fixed-width time types is used only for the condition above.

    改寫硬碟上與 SHM 中儲存的資料結構中的指標為索引值
    For data structures stored on hard disk and in SHM, change their raw pointers to integer indexes

v3.1.0-rc.1

  • 改善對 Telnet 協議的處理
    Improve the handling of the Telnet protocol

    包含:允許 IAC 命令夾雜在普通輸入中,減少初始化時的等待,防止初始化時捨棄任何 IAC 命令,顯式要求 BBS 瀏覽器接收 8-bit 資料,等等。
    Including: Allow IAC commands to mix with normal inputs, reduce waiting on initialization, prevent dropping any IAC commands during initialization, explicitly require the BBS browser to receive 8-bit data, etc.

與程式風格相關的改變 Coding-Style–Related Changes

v3.0.0-alpha.1

  • 將會存入硬碟的資料結構的定義加上 DISKDATA 註解,將其它會放入 SHM(共用記憶體)的資料結構的定義加上 SHMDATA 註解,方便未來資料結構轉換時的參考
    Add DISKDATA comments to the definition of data structures which are stored on the hard disk and SHMDATA comments to the definition of other data structures which are loaded into the SHM (shared memory) for the reference of future data structure migrations

  • 限制位元運算的使用,以改進程式可讀性
    Limit the use of bitwise operations to improve code readability

    現代的編譯器會將部份乘除運算替換成位元運算,不需要手動在程式碼中替換。
    Since modern compilers substitute some multiplications/divisions with bitwise operations, there is no need to substitute them in the code by hand.

  • 強化 const 限定詞的使用
    Enforce the use of const qualifier

  • 新增 macros 以使用 ISO C99 與 ISO C++11 中功能相近但形式不同的語法
    Add macros to use syntaxes with the similar functionality but in different forms between ISO C99 and ISO C++11

v3.0.0

  • 移除毫無意義地寫死了的顯式地指定了的陣列大小
    Remove unmeaningfully hardcoded explicit array size
  • 修正用 #if 0 取代標準註解語法當作文字註解的問題
    Fix #if 0 replaced the standard comment syntaxes for text comments

v3.1.0-rc.1

  • maple/acct.c 中未使用 bbsd 全域變數的函式移至 lib/acct.c,並與 util/ 中的幾乎重複的函式合併
    Move functions free of bbsd global variables in maple/acct.c to lib/acct.c and merge these functions with the near duplications in util/

  • 標準化 macro 定義的形式
    Normalize the forms of macro definitions

統計資訊 Statistic Information

9b3e98f9d7 為基準。

本發佈版本的專案大小 The project size of this release:

  • 檔案數 Files: 233
  • 行數 Lines: 106235
  • 位元組大小 Byte size: 2,798,011 B (≈ 2.67 MiB)

與 v2.0.0 的程式碼差異(排除空白字元的改變)The code differences from v2.0.0 (excluding whitespace changes):

  • Commits: 886
  • 修改檔案數 File changed: 233 (≈ 100.0%)
  • 增加行數 Line insertions: 22162 (≈ 20.9%)
  • 刪除行數 Line deletions: 19311 (≈ 18.2%)
Clone this wiki locally