Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove unmaintained features #460

Closed
13 of 14 tasks
sim642 opened this issue Nov 25, 2021 · 8 comments
Closed
13 of 14 tasks

Remove unmaintained features #460

sim642 opened this issue Nov 25, 2021 · 8 comments
Assignees
Labels
cleanup Refactoring, clean-up
Milestone

Comments

@sim642
Copy link
Member

sim642 commented Nov 25, 2021

After Goblint 1.1.0 aka "fat" the plan is to release Goblint 2.0.0 aka "lean", where we have the opportunity to remove numerous unmaintained and deprecated features which might hinder refactoring and development. This issue is to collect ideas for such removals and discuss them.

Ideas

@sim642 sim642 added the cleanup Refactoring, clean-up label Nov 25, 2021
@sim642 sim642 added this to the v2.0.0 milestone Nov 25, 2021
@vesalvojdani
Copy link
Member

vesalvojdani commented Nov 26, 2021

So there are some stuff that are more-or-less hopeless, and people will probably not be able to run them in the fat release either... But the OSEK stuff still probably works, but we do not have anyone at the moment to maintain it, so probably we can do this in two steps. We go for a 1.2.0 "semi-fat" release with all the previous stuff that still runs, i.e., we have enabled regressions tests for. Then, for the 1.2 line, we might want have a monthly action that checks whether it still builds, and we could occasionally back-port stuff to.

@michael-schwarz
Copy link
Member

I would also like to clean up things such as these strange obfuscated function names:

    | `Unknown "F59" (* strcpy *)
    | `Unknown "F60" (* strncpy *)
    | `Unknown "F63" (* memcpy *)

If we don't want to remove them altogether, they should at least be in some module where one is able to turn them off.

@sim642
Copy link
Member Author

sim642 commented Nov 29, 2021

Yeah, those appear to be some ARINC obfuscation things that would indeed be nice to get rid of.
The funny thing is, we have a special implementation for those, but not even memcpy itself.

@vogler
Copy link
Collaborator

vogler commented Nov 30, 2021

There's some more ARINC deobfuscation here:

let scrambled = try Sys.getenv "scrambled" = "true" with Not_found -> false
(* typedef struct {
PROCESS_NAME_TYPE NAME;
SYSTEM_ADDRESS_TYPE ENTRY_POINT;
STACK_SIZE_TYPE STACK_SIZE;
PRIORITY_TYPE BASE_PRIORITY;
SYSTEM_TIME_TYPE PERIOD;
SYSTEM_TIME_TYPE TIME_CAPACITY;
DEADLINE_TYPE DEADLINE;
} PROCESS_ATTRIBUTE_TYPE; *)
let arinc_name = if scrambled then "M161" else "NAME"
let arinc_entry_point = if scrambled then "M162" else "ENTRY_POINT"
let arinc_base_priority = if scrambled then "M164" else "BASE_PRIORITY"
let arinc_period = if scrambled then "M165" else "PERIOD"
let arinc_time_capacity = if scrambled then "M166" else "TIME_CAPACITY"

Idk why I didn't use it in special. It'd be better to deobfuscate somewhere before such that not every analysis has to take care to do it. Then we could just match memcpy etc. there.

@michael-schwarz
Copy link
Member

I think we should also either remove the tests in the folder nestra, or add assertions to them and add them to the regression tests.

@jerhard
Copy link
Member

jerhard commented Dec 15, 2021

@vogler We were discussing whether we can remove the Arinc-related analyses and domains, or whether we should keep them for now, in case you need them for some benchmarking or for some other reason.

@vogler
Copy link
Collaborator

vogler commented Dec 15, 2021

Keep them for now. I'll have a look at them.

@michael-schwarz
Copy link
Member

Do we want to keep SolverInteractiveWGlob? It is some sort of interactive solver that can be started and suspended during solving. Currently, the module is not used anywhere and the solver can thus not be used.

If we want to keep it, we should make it usable and otherwise remove it.

@sim642 sim642 unpinned this issue Aug 11, 2022
sim642 added a commit to sim642/opam-repository that referenced this issue Aug 18, 2022
CHANGES:

Goblint "lean" release after a lot of cleanup.

* Remove unmaintained analyses: OSEK, ARINC, shapes, containment, deadlocksByRaces (goblint/analyzer#460, goblint/analyzer#736, goblint/analyzer#812, goblint/analyzer#474).
* Add interactive analysis (goblint/analyzer#391).
* Add server mode (goblint/analyzer#522).
* Add Compilation Database support (goblint/analyzer#406, goblint/analyzer#448).
* Add floating point domain, unrolled array domain and improved struct domains (goblint/analyzer#734, goblint/analyzer#761, goblint/analyzer#577, goblint/analyzer#419).
* Add static loop unrolling and heap variable unrolling (goblint/analyzer#563, goblint/analyzer#722).
* Improve race detection with may-happen-in-parallel analysis (goblint/analyzer#529, goblint/analyzer#518, goblint/analyzer#595).
* Reimplement lockset and deadlock analyses (goblint/analyzer#659, goblint/analyzer#662, goblint/analyzer#650, goblint/analyzer#655).
* Add pthread extraction to Promela (goblint/analyzer#220).
* Add location spans to output (goblint/analyzer#428, goblint/analyzer#449).
* Improve race reporting (goblint/analyzer#550, goblint/analyzer#551).
* Improve dead code reporting (goblint/analyzer#94, goblint/analyzer#353, goblint/analyzer#785).
* Refactor warnings (goblint/analyzer#55, goblint/analyzer#783).
* Add JSON schema for configuration (goblint/analyzer#476, goblint/analyzer#499).
* Refactor option names (goblint/analyzer#28, goblint/analyzer#192, goblint/analyzer#516, goblint/analyzer#675).
* Add bash completion (goblint/analyzer#669).
* Add OCaml 4.13 and 4.14 support, remove OCaml 4.09 support (goblint/analyzer#503, goblint/analyzer#672).
sim642 added a commit to sim642/opam-repository that referenced this issue Aug 18, 2022
CHANGES:

Goblint "lean" release after a lot of cleanup.

* Remove unmaintained analyses: OSEK, ARINC, shapes, containment, deadlocksByRaces (goblint/analyzer#460, goblint/analyzer#736, goblint/analyzer#812, goblint/analyzer#474).
* Add interactive analysis (goblint/analyzer#391).
* Add server mode (goblint/analyzer#522).
* Add Compilation Database support (goblint/analyzer#406, goblint/analyzer#448).
* Add floating point domain, unrolled array domain and improved struct domains (goblint/analyzer#734, goblint/analyzer#761, goblint/analyzer#577, goblint/analyzer#419).
* Add static loop unrolling and heap variable unrolling (goblint/analyzer#563, goblint/analyzer#722).
* Improve race detection with may-happen-in-parallel analysis (goblint/analyzer#529, goblint/analyzer#518, goblint/analyzer#595).
* Reimplement lockset and deadlock analyses (goblint/analyzer#659, goblint/analyzer#662, goblint/analyzer#650, goblint/analyzer#655).
* Add pthread extraction to Promela (goblint/analyzer#220).
* Add location spans to output (goblint/analyzer#428, goblint/analyzer#449).
* Improve race reporting (goblint/analyzer#550, goblint/analyzer#551).
* Improve dead code reporting (goblint/analyzer#94, goblint/analyzer#353, goblint/analyzer#785).
* Refactor warnings (goblint/analyzer#55, goblint/analyzer#783).
* Add JSON schema for configuration (goblint/analyzer#476, goblint/analyzer#499).
* Refactor option names (goblint/analyzer#28, goblint/analyzer#192, goblint/analyzer#516, goblint/analyzer#675).
* Add bash completion (goblint/analyzer#669).
* Add OCaml 4.13 and 4.14 support, remove OCaml 4.09 support (goblint/analyzer#503, goblint/analyzer#672).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cleanup Refactoring, clean-up
Projects
None yet
Development

No branches or pull requests

5 participants